Генератор VRML модели сборочного чертежа печатной платы из CAD проектов.
Нет, это не фотографии, а скриншоты из обычного Internet Explorer-а с установленным плагином для просмотра VRML2.0, или, как его еще называют, VRML97.

Photo1

VRML model of А это ее трехмернaя VRML модель, и еще она же, но без деталей и пайки, размер ZIP архива 89 Kбайт (!!!). Рекомендуется использовать плагин Cortona VRML Client от ParallelGraphics, и компутер минимум 500Мгц / 128RAM / 3D ускоритель (в такой конфигурации эта модель грузится минуты 3 и ворочается со скоростью 0.8 fps ;-)
Это сгенеренo автоматически из оркадовского проекта - печанные проводники / площадки / пайки / отверстия / расстановка деталей / номиналы, с минимальной доработкой ручками там, где не задано в проекте, например, какой цвет светодиода, или в проекте не было радиатора.
Ее можно рассмотреть с любых ракурсов, повертеть, приблизить/отодвинуть.
Более того - при наличии любого стерео- или виртуального видеоустройства типа 3D стереоочков ( даже подойдут относительно недорогие ЖКИ-шторки - Elsa Revelator, ASUS, Gainward с видеокартой на чипсете от Nvidia и соответствующими драйверами ) можно видеть модель по-настоящему в обьеме.
Какая от этого польза - решать каждому, я просто делаю это для себя, но, думаю, она есть.

Пока поддерживаются OrCad PCB386+ , Protel ( ASCII formats 2.6 - 2.8 ) , TraxMaker ( aka AutoTrax ) , в дальнейшем планируется поддержка еще OrCAD Layout , Specctra , IDF (поддерживают многие CAD-ы) , PCAD и Accel EDA (в ASCII форматах) , Gerber (только 3D модель платы).
Кто знает еще удобный вариант, жду Ваших предложений.

А сейчас в рамках этого бредового проекта пишутся две примочки :

Vermalizer VeRMaLizer - генератор VRML моделей обьемных "сборочных чертежей" печатных плат.
Extruser Extruser - редактор-генератор Extrusion для VRML моделей.

Для тех, кто не знаком с VRML - это платформонезависимый язык описания виртуальной реальности (круто сказано, да ? ;-))).
В перспективе предполагается, что он ( или его преемник ) станет основным языком Интернета, и HTML будет его частью. До 3D интерфейса, нам, по-моему еще не близко, поэтому не очень многие знают, что такое чудо есть. И еще одно - VRML лицензионно чист , открыт и является текстовым описанием.
На данном этапе развития железа и стандарта самого языка он позволяет строить не очень сложные и реалистичные виртуальные миры. Они часто выглядят довольно схематически, как компромисс между реализмом и занимаемыми ресурсами.
Но вот для цели визуализации "действующих" моделей несложных устройств, думаю, его хватит. VRML2.0 позволяет также организовывать интерактивное взаимодействие с VRML обьектами.

Photo3

Photo2

Мне известны несколько программ, которые моделируют собранные платы. Но они или _очень_ схематичны, или выдают более-менее качественный результат только в рамках самой среды разработки. Как примеры противоположных подходов - CSIEda и View3D для Protel. Кроме того, концепсия построения VRML в Protel-е сделана явно на вторичной основе, и очень громоздкие получаются файлы при плачевном их виде. К примеру, вот эта же плата с меньшим количеством компонентов, сгенеренная из него, заняла 17Мбайт текста, выглядела и тормозила просто ужасно (если загружалась, потому что из-за обьема часто вешала броузер).
Для удобства передачи полной модели в архиве делается один файл VRML с включением всех необходимых компонентов, плюс текстуры. Кстати, если упаковать *.WRL в GZIP(*.WRZ понимается без специального распаковщика), то размер будет существенно меньше, что и применено в данной модели.
Небольшие размеры файлов также обеспечиваются благодаря их прототипной структуре , и построению, по возможности, всех компонентов методом Extrusion (выдавливание, никаких громоздких и супертормознутых IndexedFaceSet !!! ).
Для нанесения номиналов используются текстуры. Примочка умеет генерить полностью плату в 3D - дорожки, контактные площадки, отверстия, надписи, пайки. На картинках все сделано именно так. Но для существенного ускорения, и особенно для не очень мощных графических систем лучше рисунок платы делать просто текстурой, хотя тогда при близком ее рассматривании будут видны квадраты пикселей
Для того, чтобы компонент был на плате, достаточно в WRL файле указать его тип, поворот, номинал, позицию. Эти параметры унифицированы для всех компонентов, и для одного из них выглядит примерно так :

R10{Tex "mark/1k5.png" Rot 0 0 1 3.14 Pos 5.4000, 0.8500, 0} # R26

Сам компонент - законченное описание, и для контроля имеет в себе небольшой тест, состоящий из 2-х параллельных сеток с ячейкой 0.1м, расстоянием между ними в толщину платы и нескольких компонентов разными их направлениями и позициями. При использовании компонента в модели платы этот тест игнорируется, поэтому не мешает, а при генерировании VRML с включением компонентов, вообще не вносится в текст.
Во всех моделях проекта применен масштаб - 1 реальный дюйм соответствует 1 метру в VRML.

Photo5

Да, еще добавлю, что при повороте примера модели платы BiDiPro в броузере быстродействие примерно 25-30fps на проце IP!!!-750 и установленном плагине Cortona VRML Client от фирмы Parallel Graphics в режиме Direct3D. Это если дорожки сделаны текстурой, но при полной 3D плате резко увеличивается количество полигонов, и скорость падает до 1.2 FPS (на AMD Athlon XP+ 2500 Barton и GF4 MX440 получается побыстрее - 11fps). Также существенно увеличивается время загрузки сцены. То есть, очень большой тормоз получается только из-за применения на рисунке самой платы трехмерных моделей дорожек и площадок, зато так они выглядят лучше с близкого расстояния.
Даже более простая VRML модель, сгенеренная из Protel, выглядела несравненно хуже и давала примерно 0.13fps. Вот ее скриншот, грузилась с винта минут 15, и со второго раза, явно ей не хватало 128 ОЗУ. Хотя, пока эта модель работала в среде Protel-я, она выглядела лучше и не была такой монстрообразной.

Photo6


Мне знаком еще один проект подобного направления от Matthias Weier - получение модели платы из Eagle в формате Pov-Ray с последующим рендерением ее в картинку. Выглядит, конечно, очень даже неплохо, более реалистично, чем моя, с тенями, но ни о каком реальном времени не может быть и речи даже при самых навороченных на это время компах. В лучшем случае получается один кадр за несколько секунд, и никакого интерактивного взаимодействия. В принципе, если ставить задачей получение читаемого 3D сборочного чертежа, то, по моему мнению, это уже излишество.

Photo6

Теперь только осталось показать, как выглядит мой 3D сборочный чертеж в VRML.
Этот маленький пример - MIDI-клавиатура Йордана Петкова на PIC16F84.
Если Вы можете это нормально просмотреть, значит в системе установлено все для этого. Если нет - то рекомендую установить плагин Cortona VRML Client, он наиболее подходит для моих VRML-ов. Удобно вертеть платку в режиме Study, или переключить Кортону на скин CAD-Like.




Вот пока и все. Работа, по возможности , движется. Надеюсь, она будет закончена. ;-)
Если у кого-то имеются не-секретные проекты разведенных плат в формате OrCAD PCB386+, и, если можно, шлите их мне, постараюсь сделать из них модели, пока еще идет наработка софта и библиотеки, это, думаю, будет полезно мне и вам.

Некоторые ссылки по данной теме:


Cortona VRML Client от ParallelGraphics - я считаю лучшим плагином для просмотра VRML. Есть кроме софтового рендеринга еще полноэкранные и оконные режимы OpenGL и Direct3D. А при наличии 3D очков или другого устройства трехмерной визуализации он позволяет видеть модель по-настоящему в обьеме.

Редактор VRMLPad от той же фирмы, который работает непосредственно с текстом, в итоге получаются оптимальные по размеру файлы, и в процессе работы учит самому VRML.

Учебник по VRML 97 от Максима Авдеева - отличное пособие дла начинающих.

VRML в примерах - тоже очень полезный практический учебник.

Еще один - VRML шаг за шагом Андрея Кузина, где описаны тонкости VRML, позволившие сделать такую компактмую структуру файлов.


Огромная благодарность Николаю Клименко за то, что натолкнул на эту тему, помощь, и за саму идею.


back to main page
Hosted by uCoz