LINUX.ORG.RU

Трехмерный движок на Аде


0

0

После некоторого опыта работы с SolidWorks, Solid Edge, Pro/Engineer, Unigraphics и CATIA решил написать что-то своё (точнее начал с разработки твердотельного ядра) =) Основные причины - глючность той же CATIA, отсутствие ее для Линуха, отсутствие нормального открытого 3D пакета, кривизну CATIA (например единственный макроязык в ней - MS VBA - так что без комментариев, причем из него доступен минимум функций самой кати), и т.д. и т.п.

Язык Ада-2005 был выбран по следующим основным соображениям: 1) Скорость 2) Надежность - т.к. нету 10 тысяч сотрудников для отладки этого в случае юзания ц/ц++ 3) Понятность - т.к. строкам типа type Drawing_Mode_Type is (Fastest, Nicest, Dont_Care) вряд ли нужны комментарии 4) Достаточное количество библиотек.

Планы на будущее - сейчас написать бинарные операции и сделать хороший алгоритм оптимизации сетки, потом - добавить поддержку VRML (X3D), STEP, добавить поверхностное и гибридное моделирование, добавить возможность распределенной разработки через PostgreSQL (тк эта имхо замечательная СУБД имеет схемы и привязку к Аде), приделать интерфейс к Python'у (в принципе привязка Python-Ada уже есть - выдрана из gps и немного дополнена ;)), а также многое другое ;)

Уже реализовано: выстроена базовая иерархия классов, написана небольшая обертка поверх api gl'я, более-менее нормальный trackball (вращалка) наподобие autocad'овской, простенькая векторная математика, настраиваемые (generic) сетки, чтение LWO и STL, ... Итого 2200 строк кода...

Так что последние несколько месяцев сижу примерно в такой обстановке...

P.S. Система Debian testing/unstable (скорее второе чем первое), карта Radeon (forever), в трее как обычно Gaim (тк licq накрылся), gtk-mra, stardict. DE - глючный гном 2.10 (жду-недождуть 2.12 в unstable...). Венда отсутствует (нелюблю хранить говно на компе). Да, кстати, это мой первый скрин на ЛОРе так что если не будите сильно пинать может будет и второй %)

>>> Просмотр (1280x1024, 296 Kb)

★★

Проверено: ivlad ()

Хоть бы ещё скриншот трудов выложил... А так - один из немногих приятных скриншотов - не графикой, а идеей... =)

xlex
()

не осилил твой коммент ;)

зачем сюда выкладывать такое? чтобы показать всем какой ты крутой кодер на дьявольском языке? выложил бы в таком случае скрин результата работы...

anonymous
()

Практический вопрос: как читаешь CAD-файлы (iges, step, etc.)? Все сам пишешь, или какие библиотеки используешь?

Спасибо

Юрий

anonymous
()

Пардон, а компилятор под Ада-2005 где взял, какая версия ГРС и где ее...?

anonymous
()
Ответ на: комментарий от anonymous

> не осилил твой коммент ;)

Всмысле ничего не понял? ;)

Veter
()

Осталось сменить гейм на пси или ткаббер, глючный де на что-нибудь не глючащее - например опенбокс и зачет тебе обеспечен.
Что особенно радует, дык это профессиональный подход к разработке - сначала посмотреть на существующие проекты и только затем пробовать изобрести велосипед.

anonymous
()
Ответ на: комментарий от anonymous

> Блин, как можно кодить с такими здоровенными шрифтами!?

...наверное, без глупых ошибок?

anonymous
()
Ответ на: комментарий от anonymous

> Практический вопрос: как читаешь CAD-файлы (iges, step, etc.)? Все сам пишешь, или какие библиотеки используешь?

Реализую сам тк не охота тянуть громоздкие сюшные библиотеки типа OpenCascade. Правда пока что реализован только препроцессор STEP тк описания формата в открытом виде нет, и стоит оно $140 так что пытаюсь раздобыть описание в универе (МГТУ).

> Пардон, а компилятор под Ада-2005 где взял, какая версия ГРС и где ее...?

https://libre2.adacore.com/ - GNAT 2005 (сидит на gcc 3.4). Пока установил ручками, жду когда выдет .deb...

По поводу гейма и де - первый наверно скора сменю, со вторым пробовал перелезть на xfce, не вышло тк файловый менеджер не очень радует (rox-filer тоже пробовал), также нет хорошего системного монитора, встраиваемого в панель, и мини-командной строки. Хотя, ес-но, буду пробовать еще.

Скрин результатов работы не выкладываю тк он особого интереса не представляет - это просто окно с GLArea и несколькими кнопками, предназначенное для проверки работоспособности разных фич библиотеки.

P.S. Совсем забыл про лицензию - GPL. Не LGPL тк 1) мягко говоря нелюблю коммерческие раработки 2) новый GNAT GPL Edition генерит тока GPL-код тк все стандартные библиотеки к нему идут под GPL.

AiLr ★★
() автор топика

Изобретение "более быстрых надёжных и понятных" лисапедов все проходят ;)

Путь сам по себе верный, ибо _процесс_ в данном случае самое важное ;)

PS: Маленький совет на тему "Венда отсутствует (нелюблю хранить говно на компе)"

Портабельность может в будущем существенно расширить возможности как автора так и произведения. Рекомендую подумать на эту тему.

sS ★★★★★
()
Ответ на: комментарий от sS

Мне как-то приходилось портировать прогу на GtkAda 2.4 под отстой. Пришлось переделывать ее под Gtk 1.2 тк во второй версии просто нет поддержки Gtk_GL - так что тратить своё время на тех, у кого маленький и мягкий как-то не хочецца...

AiLr ★★
() автор топика
Ответ на: комментарий от sS

...А библиотеку для Python'а вообще пришлось тащить из cygwin'а - в родной линкер просто не находил нужных функций.

AiLr ★★
() автор топика
Ответ на: комментарий от AiLr

>так что тратить своё время на тех, у кого маленький и мягкий как-то не хочецца...

Это пока работа делается Just for fun ;)

Как только дело дойдёт до разговора о $$ такие отмазки уже канать не будут ;)

sS ★★★★★
()
Ответ на: комментарий от AiLr

>так что тратить своё время на тех, у кого маленький и мягкий как-то не хочецца...

Это пока работа делается Just for fun ;)

Как только дело дойдёт до разговора о $$ такие отмазки уже канать не будут ;)

sS ★★★★★
()

за использование Ады - уважуха!

babai
()

Работаю над аналогичной темой. Даже, наверное, такой же, но только на Common Lisp. Респект за храбрость! Тема поистине необъятная. Желаю сохранить терпение и выдержку, потому что когда-то захочешь все бросить к чертям. Это беда многих огромных проектах, которые пытаются тянуть одиночки.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Еще собираюсь оратиться к Ru.Ada.Community, когда иерархия основных классов будет более-менее выстроена и останется в основном реализовывать разнообразные дополнения. Кстати можно попробовать замутить Wiki по теме - тк алгоритмы нам нужны одни, не зависимо от языка, и у меня стоит серв под фрей с реальным ip ;)

AiLr ★★
() автор топика
Ответ на: комментарий от AiLr

>пробовал перелезть на xfce, не вышло тк файловый менеджер не очень радует (rox-filer тоже пробовал), также нет хорошего системного монитора, встраиваемого в панель, и мини-командной строки

Да, файл-менеджер там конечно не очень (ИМХО). Правда, они какой-то новый разрабатывают, Thunar кажись называется. А вот мини-командной строкиа там есть. Плагин системного монитора тоже есть, но вот насколько он хороший сказать не могу - дело вкуса.

anonymous
()
Ответ на: комментарий от AiLr

Тема с Wiki может быть интересной. Только проблема у меня сейчас в том, что завален кое-какой текучкой своей и не могу прямо сейчас сорваться на активность в этом направлении. У тебя есть время для организации Wiki и mailing-list?

З.Ы. Я тоже МГТУ закончил. Кафедра ИУ-3. :)

Zubok ★★★★★
()

Молодец автор, уважаю!

anonymous
()

> 2) Надежность - т.к. нету 10 тысяч сотрудников для отладки этого в случае юзания ц/ц++ - Логика аргументации ва-а-а-ще непонятная. "Отладки этого" - имеется в виду - конечного продукта? Т.ж. имеется в виду, что C++ настолько заморочен, что без тучи профи-отладчиков никак не обойтись? Тогда причем здесь надёжность? Автор полагает, что между сложностью и надежностью есть корреляция?

anonymous
()

> 2) Надежность - т.к. нету 10 тысяч сотрудников для отладки этого в случае юзания ц/ц++ вот найдет народ хорошую библиотеку для реализации своих нужд типа GUI в SmallTalk или вот в Аде что-то и давай C/C++ хаять

anonymous
()

> 2) Надежность - т.к. нету 10 тысяч сотрудников для отладки этого в случае юзания ц/ц++ - Логика аргументации ва-а-а-ще непонятная. "Отладки этого" - имеется в виду - конечного продукта? Т.ж. имеется в виду, что C++ настолько заморочен, что без тучи профи-отладчиков никак не обойтись? Тогда причем здесь надёжность? Автор полагает, что между сложностью и надежностью есть корреляция? Или просто сам по себе С++ теперь считается ненадёжным (смеёмся в тряпочку).

anonymous
()

> 2) Надежность - т.к. нету 10 тысяч сотрудников для отладки этого в случае юзания ц/ц++ - Логика аргументации ва-а-а-ще непонятная. "Отладки этого" - имеется в виду - конечного продукта? Т.ж. имеется в виду, что C++ настолько заморочен, что без тучи профи-отладчиков никак не обойтись? Тогда причем здесь надёжность? Автор полагает, что между сложностью и надежностью есть корреляция? Или просто сам по себе С++ теперь считается ненадёжным (смеёмся в тряпочку).

anonymous
()

> 2) Надежность - т.к. нету 10 тысяч сотрудников для отладки этого в случае юзания ц/ц++ - Логика аргументации ва-а-а-ще непонятная. "Отладки этого" - имеется в виду - конечного продукта? Т.е. имеется в виду, что C++ настолько заморочен, что без тучи профи-отладчиков никак не обойтись? Тогда причем здесь надёжность? Автор полагает, что между сложностью и надежностью есть корреляция? Или просто сам по себе С++ теперь считается ненадёжным (смеёмся в тряпочку).

anonymous
()
Ответ на: комментарий от AiLr

>Еще собираюсь оратиться к Ru.Ada.Community, когда иерархия основных классов будет более-менее выстроена и останется в основном реализовывать разнообразные дополнения.

Зачем так долго ждать! Приходите к нам сейчас!

Явно в процессе работы возникнут вопросы и желание с кем-то их обсудить. А может быть кому-то захочится поучаствовать в Вашем проекте.

Трафик у нас небольшой. Подписаться можно на http://groups.yahoo.com/group/ada_ru/ или ada_ru-subscribe@yahoogroups.com.

А основной наш сайт http://www.ada-ru.org/

yeo
()
Ответ на: комментарий от anonymous

GOD DAMN - это, предыдущее, два из трёх одинаковых - выше и еще одно, где без "смеёмся в тряпочку", т.к. мы в неё таки смеётся. И ещё один anonymous синхронно со мной подверг критике 2-ой пункт. GOD SAVE MODERZ/

anonymous
()
Ответ на: комментарий от anonymous

Насчет wiki - попробую устроить тк со временем пока проблем нет тк я в академе до февраля.

На счет надежности - спорить ни с кем я не собираюсь. Если надо сами найдете статистику по которой в программах на Аде в 9-17 раз меньше багов чем на С, и по поводу этих данных разводите флейм с теми кто проводил вычисления а не со мной.

AiLr ★★
() автор топика
Ответ на: комментарий от AiLr

В сети реально можно найти документ - исследование, сделаное по заказу Philp Morris, где доказывается что курение не вредит здоровью. Т.е. текст найти можно любой. Флеймить - последнее дело, но логика просто всё равно не понятна: программы рассматриваются как "вещи в себе". Как будто их не живые люди пишут, а проги сами собой, из ниоткуда появляются. Цвет чернил не влияет на грамотность писателя. Если мысли не ясна приведу ещё такой ход рассуждений - саксофонисты лажают реже чем барабанщики. Подамся в саксофонисты - тогда у меня меньше шансов слажать.

anonymous
()
Ответ на: комментарий от anonymous

Логика здесь достаточно прозрачная - С++ - ОО расширение языка низкого уровня С, разработанного для написания ядер и дров, Ада - язык высокого уровня, разработанный для написания сложных систем реального времени. Отсюда обилие в последнем различных проверок, которые не позволяют допускать многие ошибки. Так что не вижу предмета для обсуждения.

AiLr ★★
() автор топика
Ответ на: комментарий от AiLr

ну за такой проект и ораньжевые панельки простить можно;)

syncro@base ~ $ esearch gnat
[ Results for search key : gnat ]
[ Applications found : 4 ]

------------Skipped-------------
* dev-lang/gnat
Latest version available: 3.43
Latest version installed: [ Not Installed ]
Size of downloaded files: 37,317 kB
Homepage: http://www.gnat.com/
Description: GNAT Ada Compiler
License: GMGPL

syncro@base ~ $ esearch gps
[ Results for search key : gps ]
[ Applications found : 11 ]
-----------Skipped---------------
* dev-ada/gps-bin
Latest version available: 2.1.0
Latest version installed: [ Not Installed ]
Size of downloaded files: 12,606 kB
Homepage: http://libre.act-europe.fr/gps
Description: GNAT Programming System
License: GPL-2


генту ин май хоррабл опинион лучший дистр для разрабочика, особенно
для немного ленивого;)

Syncro ★★★★★
()
Ответ на: комментарий от Syncro

Панельки прозразные - wallpaper оранжевый =)

AiLr ★★
() автор топика
Ответ на: комментарий от AiLr

Обсуждение можно закончить в любой момент - это не вопрос. Но дело в том, что вы, похоже путаете некоторые понятия: надёжность - это не совсем подходящее определение, для того о чем вы, наверное, действительно хотели сказать. Речь так понял шла о меньшей опасности в ADA залезть на чужую делянку в динамически распределяемой памяти, за счёт того, что контролирование выхода индекса массива за пределы зарезервированного участка и т.п. ложиться не на программерские плечи, а на собственнно машину. Если так, то не нужно это называть надёжностью, намного корректней - безопасностью. Запустить что угодно адовское под виндой - оно будет надёжным? Нет. (Просто потому, что винда - хрупкая). Будет ли при этом оно шевелиться в теоретически более безопасном режиме(в упомянутом смысле), чем С++? Да. И ещё, хочется добавить, что сегодняшний С++ всё же гораздо большее чем С with classes. И сложные системы на нём тоже неплохо так пишутся. И вообще, что понимается под RTS? QNX, операционка с ассемблерным мини-ядром - система реального времени, или нет? Кто сказал нет? Ладно, Аллах с ним,.. прежде чем начинать такие споры, лучше предварительно уточнить терминологию. Завязали.

anonymous
()
Ответ на: комментарий от anonymous

На счет корректности названия - да, оно наверно так и есть. Просто после трех лет сидения на С++ переход на Аду порадовал меня в пераую очередь тем, что бОльшая часть времени стала ухдить не на отладку кода, а на его разработку (программы на Аде я серьезно отлаживал только два раза в жизни), хотя, естественно, часть времени уходит на то чтобы объяснить компилятору правоту своего решения, если плохо знаком с языком =) Если в С++ надо помнить что нельзя делать (в книге Строуструпа постоянно встречались такие вещи - мол, оставлено для совместимости с С, но никогда это не юзайте!), то в Аде это просто запрещено. Это, имхо, означает не то что программер на Аде может быть тупым, а то, что снижается человеческий фактор.

AiLr ★★
() автор топика

Дмитрий! Или просто уважаемый автор трёхмернго движка на Аде! :-) Нам интересна Ваша работа. Хотелось бы пообщаться по данной тематике. Пожалуйста, напишите письмо для завязки разговора на vladimirtest at yandex d0t ru

-- Vladimir

anonymous
()
Ответ на: комментарий от AiLr

ну автору конечно всяческое уважение... с адой я честно говоря не знаком, но насколько я понимаю язык достаточно экзотический... есть ли смысл делать такой проект на дастоточно редком языке?

mosia
()
Ответ на: комментарий от mosia

Язык достаточно простой и понятный, так что, думаю, библиотека должна найти применение. К тому же планируется привязка к Python и Tcl...

AiLr ★★
() автор топика
Ответ на: комментарий от AiLr

>> Пардон, а компилятор под Ада-2005 где взял, какая версия ГРС и где ее...?

>https://libre2.adacore.com/ - GNAT 2005 (сидит на gcc 3.4). Пока >установил ручками, жду когда выдет .deb...

Просто смешная ситуация, не могу зарегестрироваться на https://libre2.adacore.com/, после заполнения формы (окна №2), выкидывает обратно на 1-е окно, может кто подсобит...

anonymous
()
Ответ на: комментарий от anonymous

ftp://asm.pp.ru/pub/gnat-2005-and-tools/ Оно там =) Скорость конешно не очень зато никакой авторизации и прочей глупости ;) Если потребуется еще что - пиши на al(at)svao(dot)net ;)

AiLr ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.