如何在 X3DOM IndexedFaceSet 中允许 180 度角
How to allow 180 degree angles in X3DOM IndexedFaceSet
我试图在 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),效果很好,但我无法在我的脚本中轻松更改它(实际形状是复杂得多)
首先,您发布的 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
但是在将所有点添加到 IndexedFaceSet
的 coordIndex
并将 convex
设置为 true
之后,我的 X3D 查看器能够呈现蓝色矩形:
<?xml version="1.0" encoding="UTF-8"?>
<X3D>
<Scene>
<Viewpoint description='Front view' orientation='0 1 0 1.57' position='8 0 0'/>
<Shape DEF='Front'>
<IndexedFaceSet coordIndex='0 1 2 3 4 5 6 7' solid='false' convex='true'>
<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>
希望对您有所帮助:)
我试图在 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),效果很好,但我无法在我的脚本中轻松更改它(实际形状是复杂得多)
首先,您发布的 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
但是在将所有点添加到 IndexedFaceSet
的 coordIndex
并将 convex
设置为 true
之后,我的 X3D 查看器能够呈现蓝色矩形:
<?xml version="1.0" encoding="UTF-8"?>
<X3D>
<Scene>
<Viewpoint description='Front view' orientation='0 1 0 1.57' position='8 0 0'/>
<Shape DEF='Front'>
<IndexedFaceSet coordIndex='0 1 2 3 4 5 6 7' solid='false' convex='true'>
<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>
希望对您有所帮助:)