2017-09-11 6 views
0

Mes données se composent d'au moins 30k points dont je veux être visualisé comme une sphère, donc je verrais des milliers de sphères formant une forme. J'ai essayé d'utiliser VRML, car il semble très simple, mais le fichier est trop grand, car il se compose de répétitions du soufflet de texte, un pour chaque point:Visualisez les points comme des sphères sans créer de sphère pour chaque point

# 'X_32228' 
Transform { 
    translation 96.0 85.0 76.0 
    children [ 
     Shape { 
      appearance Appearance { material Material {} } 
      geometry Sphere { radius 1 } 
     } 
    ] 
} 

Comment puis-je créer une sphère et de le reproduire sur les différents points? ou plus en général, comment puis-je réduire la taille du fichier de sortie? même si c'est sur un format différent (comme X3D).

Répondre

1

Vous pouvez réaliser ce que vous voulez en utilisant le mécanisme PROTO.

PROTO SmallSphere [ 
    exposedField SFVec3f SmallSphere_translation 0 0 0 
] 
{ 
Transform { 
    translation IS SmallSphere_translation 
    children [ 
     Shape { 
      appearance Appearance { material Material {} } 
      geometry Sphere { radius 1 } 
     } 
    ] 
} 

Le code ci-dessus crée essentiellement un PROTO (quelque chose comme une classe dans la programmation orientée objet) à partir de votre Transform où la traduction est variable. Ensuite, vous devez créer des instances de celui-ci comme suit:

SmallSphere { SmallSphere_translation 96.0 85.0 76.0 } 
SmallSphere { SmallSphere_translation 3.0 8.0 6.0 } 
SmallSphere { SmallSphere_translation 936.0 385.0 746.0 } 

... autant que vous voulez, où la traduction est le paramètre que vous passez d'une instance à l'autre. Si vous avez besoin d'autres champs à modifier avec l'instance, vous n'avez qu'à suivre l'exemple ci-dessus. Par exemple vous voulez que le rayon de la sphère à être variable, vous devrez créer votre PROTO comme suit:

PROTO SmallSphere [ 
    exposedField SFVec3f SmallSphere_translation 0 0 0 
    exposedField SFFloat SmallSphere_radius 2.0 
] 
{ 
Transform { 
    translation IS SmallSphere_translation 
    children [ 
     Shape { 
      appearance Appearance { material Material {} } 
      geometry Sphere { radius IS SmallSpehere_radius } 
     } 
    ] 
} 

S'il vous plaît noter que SmallSphere_translation et SmallSphere_radius sont des noms choisis par moi. Vous pouvez nommer ces champs comme vous le souhaitez.