2017-10-09 5 views
1

J'ai un code VRML que je veux convertir en X3D. Le code doit définir des sphères avec un rayon et des couleurs différents pour les instancier ultérieurement en donnant les coordonnées en tant qu'argument.X3D: PROTO converti à partir de VRML ne fonctionne pas

D'abord, j'ai utilisé un online converter suggéré dans another question, puis l'ai ouvert dans blender pour le vérifier mais il n'affiche qu'une seule sphère au lieu des 4 qu'il est censé faire. Je l'ai comparé avec d'autres exemples similaires trouvés par googling et je ne vois aucune différence ou indice quant à pourquoi il le fait. J'ai essayé de changer certains champs afin qu'il ressemble plus aux exemples: field accessType à initializeOnly, les informations à l'intérieur <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". J'ai également essayé de placer <Shape> à l'intérieur de <children> comme dans VRML mais dans tous les cas il n'affiche qu'une seule sphère.

Ceci est une version simplifiée du code VRML Je veux convertir X3D:

#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 

Voici ce que je reçois du convertisseur:

<?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/> 
    <Copper xyz='0 1.8 1.8'/> 
    <Copper xyz='1.8 0 1.8'/> 
    <Copper xyz='1.8 1.8 0'/> 
    </Scene> 
</X3D> 

Répondre

0

Malheureusement, il ressemble à un bug dans l'importateur X3D de Blender, car ce qui suit montre quatre sphères (comme prévu) dans la visionneuse BS Contact, mais une seule sphère dans Blender:

<?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>