WebGL:多面体内的视点

时间:2013-12-28 04:29:09

标签: webgl

在WebGL中渲染多面体上“内部”的最简单方法是什么?

换句话说,我想要一个八角形棱镜(像圆柱体),它是“空心的”,我想要“站立”在它内部。就是这样。

3 个答案:

答案 0 :(得分:0)

我猜测你的问题,但通常是单边绘制多边形 - 也就是说,当你从后面看到它们时它们不会渲染。在大多数情况下,这种方法更有效。

如果相机在实心棱镜内部时多边形消失,请考虑将它们渲染为双面(如果您想在不同时间内部和外部渲染),或者只是反转您的绕组(顶点顺序)多边形,或反转OpenGL的单侧多边形剔除状态(后/前),以显示背面而不是前面。

答案 1 :(得分:0)

大多数WebGL框架都会开启剔除,因此WebGL / OpenGL会剔除面向三角形的内容。

您可以确保使用

关闭剔除
gl.disable(gl.CULL_FACE);

您可以使用

启用剔除
gl.enable(gl.CULL_FACE);

如果剔除,您可以选择面向WebGL的剔除。默认情况下,背面三角形是在屏幕空间中顶点按顺时针顺序排列的三角形。对于从模型内部查看时大多数3D模型。要剔除那些面向后方的三角形,您可以使用

gl.cullFace(gl.BACK);

或者你可以告诉WebGL用前面的三角形剔除。

gl.cullFace(gl.FRONT);

This article has a section on culling

答案 2 :(得分:0)

根据您使用的框架,您可能会使用以下内容:

  • 绘制对象
  • 确保禁用剔除(GL_CULL)。在three.js中,您可以使用“Doubleside”属性作为对象
  • 翻译观察者位置(或对象),使视点位于其中 宾语。例如three.sphere.translate