如何在X3DOM IndexedFaceSet中允许180度角

时间:2019-06-03 01:11:35

标签: x3dom

我正在尝试在X3DOM中制作一个简单的平面2D形状,但是由于坐标是自动生成的,所以其中一些坐标是一条直线,在这种情况下X3DOM似乎会失败。下面是一个简单的示例。我在这里做什么错了?

<X3D width='800px' height='600px'>
<Scene>
<Viewpoint description='Front view' orientation='0 1 0 1.57' position='8 0 0'/> 
<Shape DEF='Front'>
<IndexedFaceSet coordIndex='0 1 2 3' solid='false', convex='false'>
<Coordinate DEF='Points' point='
1 1 1
1 1 2
1 1 3
1 1 4
2 1 4
2 1 3
2 1 2
2 1 1
1 1 1'/> 
</IndexedFaceSet>
<Appearance>
<Material diffuseColor="0 0 1" specularColor=".5 .5 .5" DEF="edgecolour" />
</Appearance>

</Shape> </Scene>
</X3D> 

如果我切掉中间的4个点(1 1 3、1 1 4、2 1 4、2 1 3),这很好用,但是我不能轻易在脚本中更改它(实际形状要多得多)复杂)

1 个答案:

答案 0 :(得分:1)

首先,您发布的x3d代码段格式错误:

<IndexedFaceSet coordIndex='0 1 2 3' solid='false', convex='false'>
                                                  ^

第二,您的IndexedFaceSet仅使用Coordinate节点的前4个坐标:

coordIndex='0 1 2 3'

并且前4个点仅形成一条直线,该直线作为人脸是不可见的(面积为0,没有要渲染的东西)。只有Z变化:

1 1 1
1 1 2
1 1 3
1 1 4

但是在将所有点添加到coordIndex的{​​{1}}并将IndexedFaceSet设置为convex之后,我的X3D查看器能够渲染一个蓝色矩形:

true

希望有帮助:)