【发布时间】:2017-10-28 09:49:44
【问题描述】:
我有一个代表 3D 模型点云的 THREE.Points 对象。约 10,000 垂直。我希望能够“隐藏”相机不“可见”的点(因此,如果对象正常渲染则不可见的顶点不应渲染为点)。
是否有一种计算成本低廉的方法来查找“面向”相机的顶点?
【问题讨论】:
标签: three.js
我有一个代表 3D 模型点云的 THREE.Points 对象。约 10,000 垂直。我希望能够“隐藏”相机不“可见”的点(因此,如果对象正常渲染则不可见的顶点不应渲染为点)。
是否有一种计算成本低廉的方法来查找“面向”相机的顶点?
【问题讨论】:
标签: three.js
编辑: (完全误解了最初提出的问题)
您可以使用点或面的法线来确定它们是正面还是背面。这将起作用,除非有面向相机的点通常会被更靠近相机的人脸遮挡。在这种情况下,需要对人脸进行 z 排序。
原始答案: (留在这里供参考)
有趣的问题是您为什么要这样做?反正它们是不可见的,为什么要显式隐藏它们呢?
这是在 GPU 的固定功能管道中以最快的方式实现的(如果您好奇:这是在所有坐标都已转换为规范视图体积时在顶点着色器之后发生的剪辑)。您可以(或应该)在 javascript 中做任何事情来获得更多性能。
如果您想手动控制可见性,这意味着在每个点上运行一些过程,并随时更新几何图形。完成后,几何图形需要再次上传到 GPU,这是另一个性能损失。
但我不知道您的用例,也许您有正当理由这样做。在这种情况下,请参见此处:Manual frustrum culling with three.js
【讨论】: