【问题标题】:Resizing a bone in OnPreRender does not resize for current Camera in Unity在 OnPreRender 中调整骨骼大小不会为 Unity 中的当前相机调整大小
【发布时间】:2019-07-11 18:23:26
【问题描述】:

我正在为我的 Unity3D 游戏创建自定义头像系统,让玩家能够上传自己的头像。 由于我的游戏是针对 VR 的,我当然想向用户展示身体,在这个过程中隐藏头部。 我正在考虑仅将 VR 相机的头骨缩小到零,以便镜子和其他相机仍能看到头部。

我已经尝试过各种不同的方法,包括Update、LateUpdate、OnPreCull。他们中的一些人实际上缩小了头部,但是对于场景中的每个摄像机,而不仅仅是我想要的。

private void OnPreRender()
{
    Original = head.localScale;
    head.localScale = Vector3.zero;
}

private void OnPostRender()
{
    head.localScale = Original;
}

我希望头部缩放到 0(什么都没有),但唯一发生的事情是骨骼的子对象移动到缩小的位置,但实际上并没有缩放。

编辑:经过进一步测试,我注意到 gameObject.SetActive 可以正常工作。对于带有脚本的相机,整个化身变得不可见。缩放似乎不起作用。我的猜测是缩放可能需要更多帧来处理。而渲染函数执行的时候,只是缩放的一半。

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    这不是有效的方法。最好将手放在不同的图层上,然后在 VR 相机上关闭该图层的剔除。这样你就不需要接触变换,这是一个更少的原生->统一管理调用(层在原生端处理)

    【讨论】:

    • 遗憾的是,这是不可能的。由于用户可以创建和上传他们自己的自定义头像,我需要有一种方法让每个用户都能轻松上传他们的头像。让他们将头部与身体分离并将其放在不同的层上只会引起混乱。
    • 将对象放置在图层上不需要分离。图层剔除是按相机完成的
    • 我的意思是用户必须让头部和身体是不同的部分。单独的网格。虽然我想让我的用户能够为他们的头像设置一个网格。
    • 我认为从用户的角度来看,为手和头部设置相同的网格并不是一个好主意 - 头部不会被自动剔除,即使对于那些拥有head it is.edit:我错过了关于用户上传他们的网格的部分 - 我知道你现在的问题是什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多