我有一个VRML代码,我想转换成X3D。代码应该定义具有不同半径和颜色的球体,以便稍后通过提供坐标作为参数进行实例化。
首先,我使用了another question中建议的online converter,然后在blender中打开它进行检查,但它只显示一个球体,而不是它应该显示的4个球体。我将它与通过谷歌搜索找到的其他类似示例进行了比较,我看不出它为什么会这样做的任何区别或线索。我尝试过更改一些字段,使其看起来更像示例:将field accessType更改为initializeOnly,将<X3D ...>中的信息更改为profile="Interchange" version="3.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-3.2.xsd"。我也尝试过将<Shape>放在<children>中,就像在VRML中一样,但在所有情况下它都只显示一个球体。
这是我想要转换成x3d的VRML代码的简化版本:
#VRML 2.0 utf8
PROTO Copper [ exposedField SFVec3f xyz 0 0 0 ] {
Transform {
translation IS xyz
children [
Shape {
appearance Appearance {
material Material { diffuseColor 0.78 0.5 0.2 }
}
geometry Sphere { radius 1.32 }
}
]
}
}
Copper { xyz 0.0 0.0 0.0 } # 0
Copper { xyz 0.0 1.8 1.8 } # 1
Copper { xyz 1.8 0.0 1.8 } # 2
Copper { xyz 1.8 1.8 0.0 } # 3这是我从转换器得到的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd">
<X3D xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' profile='Full' version='3.0' xsd:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.0.xsd'>
<Scene DEF='scene'>
<ProtoDeclare name='Copper'>
<ProtoInterface>
<field accessType='inputOutput' name='xyz' type='SFVec3f' value='0 0 0'/>
</ProtoInterface>
<ProtoBody>
<Transform>
<Shape>
<Appearance>
<Material diffuseColor='0.78 0.5 0.2'/>
</Appearance>
<Sphere radius='1.32'/>
</Shape>
<IS>
<connect nodeField='translation' protoField='xyz'/>
</IS>
</Transform>
</ProtoBody>
</ProtoDeclare>
<Copper xyz='0.0 0.0 0.0'/>
<Copper xyz='0.0 1.8 1.8'/>
<Copper xyz='1.8 0.0 1.8'/>
<Copper xyz='1.8 1.8 0.0'/>
</Scene>
</X3D>发布于 2017-10-11 09:18:41
不幸的是,它看起来像搅拌器X3D导入器中的错误,因为以下在BS联系人查看器中显示了四个球体(正如预期),但在搅拌器中只显示了一个球体:
<?xml version="1.0" encoding="UTF-8"?>
<X3D profile="Immersive" version="3.0">
<Scene>
<ProtoDeclare name="Copper">
<ProtoInterface>
<field accessType="inputOutput" name="xyz" type="SFVec3f"/>
</ProtoInterface>
<ProtoBody>
<Transform translation='0 0 0'>
<Shape>
<Appearance>
<Material diffuseColor='0.78 0.5 0.2'/>
</Appearance>
<Sphere radius='1.32' />
</Shape>
<IS>
<connect nodeField="translation" protoField="xyz"/>
</IS>
</Transform>
</ProtoBody>
</ProtoDeclare>
<Copper />
<Copper xyz='0 1.8 1.8' />
<Copper xyz='1.8 0 1.8' />
<Copper xyz='1.8 1.8 0' />
</Scene>
</X3D>https://stackoverflow.com/questions/46643226
复制相似问题