2D visualization

Hi team,
what is the best way to visualize a point or a line or a polyline in a view?
I am creating a line or a point but I have this problem.
image

    @GeometryView("LineView", duration_guess=1, view_mode='2D')
    def line_vis(self, params, **kwargs):
        pt1 = vg.Point(0, 0, 0)
        pt2 = vg.Point(10, 10, 10)
        line = vg.Line(pt1, pt2)
        return GeometryResult(line)

Donโ€™t tell me I have to use Plotly or create an SVG file :slight_smile:

Hi, the GeometryView currently only supports TransformableObjects or a GLTF file. I would advice to use the latter, which you can easily create in trimesh (see Results & visualizations - 3D model | VIKTOR Documentation). A line can then be visualized using a Path3D.

Thanks, @khameeteman
could please show me an example?
And what about points using trimesh?
I am asking for an example because I never used trimesh and they have a different why of building elements, I have to provide entitiesโ€ฆ
So an example could help

An example is provided in this section: Results & visualizations - 3D model | VIKTOR Documentation.

Points can be created using a PointCloud

Yeah, I saw that example and it is clear.
Iโ€™m trying to understand the requirements for a Path2d and Path3d trimesh.path โ€” trimesh 3.12.6 documentation
what are entities and how I should pass the vertices?
This is what I asked for an example.

I understand, it is not as straightforward and I noticed that you will also need shapely and scipy as separate requirements while they are not actually necessary for this part of the trimesh code. So I can imagine that simply passing a viktor line should be much easier. I will bump our internal issue.

Anyway, this should work:


@GeometryView(...)
def geometry_view(self, **kwargs):
    import trimesh

    p1 = [0, 0, 0]
    p2 = [1, 1, 0]

    line = trimesh.path.entities.Line(points=[0, 1])
    path = trimesh.path.Path3D(entities=[line], vertices=[p1, p2])
    scene = trimesh.Scene(geometry=path)
    geometry = File()
    with geometry.open_binary() as w:
        w.write(trimesh.exchange.gltf.export_glb(scene))

    return GeometryResult(geometry)
1 Like

Hi there,

Getting back to this post because some new developments have been shipped. If you bump to SDK v13.5.0 or higher you are able to visualise Line elements as well. The changelog also describes that Arc and PolyLine elements are now ready to be visualised in a GeometryView as well.
Point elements can still not be visualised directly, though the option is still open to generate a Sphere to include points in a visual.

Hope this helps!