Как быстро (легко написать) предварительный просмотр 3D векторов / линий? - PullRequest
2 голосов
/ 28 августа 2009

Я занят чтением 3D-моделей зданий из инструмента и, таким образом, создаю группу Line(p1, p2) объектов, каждый из которых состоит из двух Point(x, y, z) объектов. Я хотел бы отобразить эти вещи в простом средстве трехмерного просмотра, вроде SVG (который, как я понимаю, поддерживает только 2D).

Чтение выполняется на Python, в частности IronPython. Я мог бы использовать либо библиотеку просмотра .NET, либо записать файл text / xml / whatnot с данными для отображения, открыв результат вручную в соответствующей программе.

Какой формат / инструмент вы бы использовали для просмотра данных?

(На данный момент это только для целей отладки, поэтому он не должен быть на высшем уровне. Подойдет только каркас!)

Я проверил библиотеку mathplot, но, похоже, она работает только с графиками ...

РЕДАКТИРОВАТЬ: В конце концов я пошел по маршруту X3D и написал небольшой пост в блоге о том, как это сделать . Вот пример файла каркаса X3D для куба 1x1x1:

<?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 голос
/ 25 февраля 2010

Вы можете посмотреть на POV-Ray. Это трассировщик лучей, который имеет свой собственный текстовый язык описания сцены. IIRC, есть модуль python, который будет генерировать файлы сцены, в противном случае это не составит труда сделать вручную. Отображение отрезков в низком разрешении должно отображаться довольно быстро.

Проверьте здесь: http://code.activestate.com/recipes/205451/

Кроме того, python является языком сценариев для Blender.

1 голос
/ 28 августа 2009

Вы можете попробовать пакет PyQwt3D . Если это не сработает, вот список других пакетов Python , которые могут быть полезны.

1 голос
/ 01 сентября 2009

Для использования подхода записи в файл вы можете исследовать X3D , который является преемником VRML. Также смотрите этот список языков разметки векторной графики

1 голос
/ 28 августа 2009

Я не специалист по 3D-программированию, но есть простой трюк, который вы можете сделать.
Если вы представляете , что ось z расположена вертикально относительно вашего экрана, тогда вы можете проецировать трехмерную точку (x, y, z) следующим образом: (zoom_factor*(x/z), zoom_factor*(y/z))

...