在X3D(OM)中创建一组箭头

时间:2016-12-19 02:29:44

标签: x3d x3dom

我知道你可以通过在一个cynlinder的末端添加一个圆锥来创建一个箭头。像这样:

<Shape>
<Cylinder DEF='ArrowCylinder' radius='.025' top='false'/> 
<Appearance DEF='Green'>
<Material diffuseColor='.1 .6 .1' emissiveColor='.05 .2 .05'/>
</Appearance>
</Shape> 
<Transform translation='0 1 0'>
<Shape>
<Cone DEF='ArrowCone' bottomRadius='.05' height='.1'/> 
<Appearance USE='Green'/>
</Shape>
</Transform>

如果我想用X3DOM显示类似字形/矢量字段的内容怎么办?显然创建一整套箭头,其中每个箭头都是这样定义的,这不是一个优雅的解决方案......

1 个答案:

答案 0 :(得分:0)

一种方法可能是使用IndexedFaceSet节点设置/构建自己的箭头,然后使用id对其进行分组,或者您也可以将一组箭头分组,当然在一个ID下:这是(2-D)例如:

<x3d width="400px" height="400px">
  <scene>
    <group id="arrow">      
        <shape>
          <appearance>
            <material diffuseColor="0.25 0.75 0.755"></material>
          </appearance>
          <IndexedFaceSet solid="false" coordIndex="0 1 2 3 0 -1">
            <coordinate point="0 0 0 1 0 0 1 1 0 0 1 0">
            </coordinate>
          </IndexedFaceSet>
        </shape>
      <shape>
        <appearance>
          <material diffuseColor="0.25 0.75 0.755"></material>
        </appearance>
        <IndexedFaceSet solid="false" coordIndex="0 1 2 3 0 -1">
          <coordinate point="1 -0.5 0 2 0.5 0 2 0.5 0 1 1.5 0">
          </coordinate>
        </IndexedFaceSet>
      </shape>
    </group>
  </scene>
</x3d>

如果你使用大量的箭头,一个很大的好处就是减少积分/抽取很多,从而获得性能。