我正在尝试在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),这很好用,但是我不能轻易在脚本中更改它(实际形状要多得多)复杂)
答案 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
希望有帮助:)