如何快速预览3D向量/线条?

2 投票
4 回答
501 浏览
提问于 2025-04-15 13:55

我正在忙着从一个工具中读取3D建筑模型,因此生成了一堆Line(p1, p2)对象,每个对象由两个Point(x, y, z)对象组成。我想在一个简单的3D查看器中显示这些东西,类似于SVG(我理解的,SVG只支持2D)。

这个读取过程是用Python进行的,具体来说是IronPython。我可以使用一个.NET的查看库,或者把数据写成文本/xml等文件,然后手动在合适的程序中打开结果来查看。

你会用什么格式/工具来查看这些数据呢?

(目前这只是为了调试,所以不需要太高端。简单的线框就可以了!)

我查看过mathplot库,但它似乎只支持绘制函数……

编辑:我最终选择了X3D的方式,并写了一篇小博客文章来介绍怎么做。这里有一个1x1x1立方体的X3D线框文件示例:

<?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 profile="Immersive" >
  <Scene>

    <Transform>
      <Shape>
        <LineSet vertexCount="5">
            <Coordinate point="1 0 0
                               1 1 0
                               0 1 0
                               0 0 0
                               1 0 0"
                               />
        </LineSet>
    </Shape>
    <Shape>
        <LineSet vertexCount="5">
            <Coordinate point="1 0 1
                               1 1 1
                               0 1 1
                               0 0 1
                               1 0 1"
                               />
        </LineSet>
    </Shape>
    <Shape>
        <LineSet vertexCount="5">
            <Coordinate point="0 0 1
                               1 0 1
                               1 0 0
                               0 0 0
                               0 0 1"
                               />
        </LineSet>
    </Shape>
    <Shape>
        <LineSet vertexCount="5">
            <Coordinate point="0 1 1
                               1 1 1
                               1 1 0
                               0 1 0
                               0 1 1"
                               />
        </LineSet>
      </Shape>
    </Transform>
  </Scene>
</X3D>

4 个回答

1

我不是3D编程方面的专家,但有一个简单的小技巧可以分享。
如果你把z轴想象成垂直于你的屏幕,那么你可以用下面的方式来投影一个3D点(x, y, z)(zoom_factor*(x/z), zoom_factor*(y/z))

1

你可以试试这个叫做 PyQwt3D 的软件包。如果这个不行的话,这里有一个 其他有用的Python软件包列表,你可以看看。

1

如果你想了解如何通过写文件的方式来处理,可以看看X3D,它是VRML的升级版。另外,你也可以查看这份矢量图形标记语言的列表

撰写回答