将点可视化为球体,而无需为每个点创建球体
Visualize points as spheres without creating a sphere for each point
我的数据包含至少 30k 个点,我希望将每个点可视化为一个球体,因此我会看到数千个球体形成一个形状。我尝试使用 VRML,因为它看起来非常简单,但是文件变得太大了,因为它包含重复的文本波纹管,每个点一个:
# 'X_32228'
Transform {
translation 96.0 85.0 76.0
children [
Shape {
appearance Appearance { material Material {} }
geometry Sphere { radius 1 }
}
]
}
如何创建一个球体并将其复制到不同的点上?或者更一般地说,如何减小输出文件的大小?即使它采用不同的格式(如 X3D)。
你可以通过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 }
}
]
}
上面的代码基本上从您的转换中创建了一个 PROTO(类似于面向对象编程中的 class),其中翻译是可变的。然后,您必须按如下方式创建它的实例:
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 }
...随心所欲,其中翻译是您从一个实例更改为另一个实例的参数。如果您需要使用实例更改其他一些字段,您只需按照上面的示例进行操作。例如,如果您希望球体的半径可变,则必须按如下方式创建 PROTO:
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 }
}
]
}
请注意SmallSphere_translation和SmallSphere_radius是我选的名字。您可以根据需要命名这些字段。
我的数据包含至少 30k 个点,我希望将每个点可视化为一个球体,因此我会看到数千个球体形成一个形状。我尝试使用 VRML,因为它看起来非常简单,但是文件变得太大了,因为它包含重复的文本波纹管,每个点一个:
# 'X_32228'
Transform {
translation 96.0 85.0 76.0
children [
Shape {
appearance Appearance { material Material {} }
geometry Sphere { radius 1 }
}
]
}
如何创建一个球体并将其复制到不同的点上?或者更一般地说,如何减小输出文件的大小?即使它采用不同的格式(如 X3D)。
你可以通过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 }
}
]
}
上面的代码基本上从您的转换中创建了一个 PROTO(类似于面向对象编程中的 class),其中翻译是可变的。然后,您必须按如下方式创建它的实例:
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 }
...随心所欲,其中翻译是您从一个实例更改为另一个实例的参数。如果您需要使用实例更改其他一些字段,您只需按照上面的示例进行操作。例如,如果您希望球体的半径可变,则必须按如下方式创建 PROTO:
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 }
}
]
}
请注意SmallSphere_translation和SmallSphere_radius是我选的名字。您可以根据需要命名这些字段。