[英]How to hide parts of 3D objects that stick out of the back of other (complex) 3D objects?
我正在使用Three.js(an骨)渲染复杂的3D网格。 然后,我将一些简单的球体与此网格一起渲染,以标记表面上的某些点(肌肉将附着的位置):
问题是,某些区域的网格很薄,标记会从背面伸出。
假设标记坐标始终比背面更靠近网格的正面,并且球体始终在网格的正面比背面显示更多的表面积/体积:
我如何隐藏不突出手动突出特定标记的部分?
编辑:这是我可能的一种(幼稚的)方法。 我想要有关该想法的可行性的反馈,并希望获得(一些写作提示)实际代码:
我不确定如何对任何这些步骤进行编码。 我也不确定这是否是明智的选择。
绘制半球而不是完整的球。 使用phiStart
和phiLength
的参数SphereGeometry构造。
球体的中心仍将位于骨骼表面(顶点)上。
一个球体的方向将由球体原点中计算出的normal
给出。
Three.js已经计算出网格的法线,以确定光线如何从网格反射。 您可以使用VertexNormalsHelper
来显示网格的法线:
var bone = ...; // bone mesh
var scene = ...; //your THREE.Scene
scene.add(new THREE.VertexNormalsHelper(bone));
可在此处找到VertexNormalsHelper
的源代码: VertexNormalsHelper
您必须计算法线向量和oZ
轴之间的角度差,以便获得difX
和difY
。 这些是必须在X
和Y
方向上旋转球体以使其垂直于骨骼局部表面的量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.