Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» 3D редактор на OpenGL

Автор: Vitaliy_266
Дата сообщения: 23.08.2004 14:51
Обращаюсь к знающим людям с, как кому то может показаться, наивной просьбой.

Я учусь на 5-ом курсе Киевского политеха. Начал работать со своим преподом над его теорией проектирования электрических двигателей. С меня требуется написать прогу по визуальному моделированию.

Прошу, если у кого есть код (или часть кода) 3D редактора на OpenGL под Delphi или С++. Хотя бы элементарного (построение кубов, сфер, цилиндров…), идеально было бы код 3Ds MAXa .

Я начал учить OpenGL, но хотелось бы посмотреть, как пишут другие, чтобы не наступать не те же грабли.

Или может статейку кто знает, как это делал ктото?

Заранее спасибо.

Автор: MaximKat
Дата сообщения: 23.08.2004 15:37
Vitaliy_266
Есть электронный вариант книги "Open GL. Графика в проектах Delphi" Краснов М.В.
Оглавление: http://www.intuit.ru/shop/catalog/book/programming/windows/product.xhtml?id=1942417&contents=1

Там есть разделы Глава 5. Пример CAD-системы: визуализация работы робота и Глава 6. Создаем свой редактор. Думаю это как раз то что тебе нужно

Если надо - пиши на профильное мыло, вышлю (~3,5 метра)

[offtop]
ЗЫ Надо было не в политех, а в Шевченко идти
[/offtop]
Автор: Vitaliy_266
Дата сообщения: 23.08.2004 15:51
2 MaximKat

Эта книжка у меня есть, по ней OpenGL и учу. Хочу узнать может есть редакторы с открытыми кодом, потому что приведенный примеры немного примитивные.

[offtop]
ЗЫ В Политехе студентов больше, а значит…
[/offtop]
Автор: Vitaliy_266
Дата сообщения: 24.08.2004 17:26
Неужели никто не знает даже разработчиков 3D редакторов.
Или мест где они водятся?
Автор: AANDREY
Дата сообщения: 07.09.2004 01:48
Если сильно надо могу выслать свои недоделанные тварения на тему подобия автокада. тока адрес твой непоказывается
Автор: SashKa
Дата сообщения: 09.09.2004 16:26
Сел давсь делать игрушку под OGL, а формат из 3ds я исчо не изучал. Разработал за месяц свой редактор. Делюся опытом.
Разбил его на две части:
1. Создание поверхностей - из квадратной сетки (mesh в моем понимании) создается некая поверхность (туда впихнуты генерации типовых поверхностей - тор, шар. итп; создание поврехности - вращением кривой вокруг оси, трансляцией 2D поверхности в постранстве) Разумеется редактирование поврехности по контрольным вершинам. Ну там масштыбы повороты переносы. Расчет нормалей к вершинам.
2. Сборка объктов из этих поврехностей (масштабы, повороты, переносы) Наложение тектсур, задание свойств материалов. Установка альфаканалов.

Формат файлов пришлось свой придумать.
Основные проблемы, с которыми столкнулся:
Выбор мышью нужного объекта - решается легко.
Вращение - так до конца однозначно и не сделал, т.к. при вращении по одной оси, можно считать что идет поворот вокруг центра координат и последущее вращение по другой оси не такое уж и ожидаемое, но это так..
Почему то на текстурах синий цвет воспринимается как цвет с альфой 0,19..с чем-то, и не меняется, даже если этому пикселю присвоить альфа значение любое. так и не разобрался.
Модификация сетки выдавливанием объемными фигурами - руки не доходят.
Расчет нормалей - иногда глючит престранно.
Еще странные заморочки с позиционированием источников света.

Но уже щас можно в принципе я думаю движок то нарисовать (Жуков же я рисую)

Все сделано в Билдере 6. Если есть вопросы и коментарии - пшите. Тут еще 354711356255 вещей над которыми стоит подумать.


Автор: AANDREY
Дата сообщения: 11.09.2004 23:24
SashKa
Не поделишля мыслями на тему выбора объектов?
У меня всё через feedback, но для привязок к объектам приходится 2 раза туда рендерить.
Автор: SashKa
Дата сообщения: 13.09.2004 08:27
В редакторе поверхносетей было необходимо выбиратьконтрольные точки. Так я использовал gluUnProject для преобразования координат мыши в мировые координаты с некоторым допуском, а потом просто перебирал все вершины и брал ближайшую. Причем при таком подходе (щас правда уже подзабыл как точно) я не учитывал z координату. Все нормально работает, даже если какие-то вершины имеют близкие x и y и разные z, достаточно было только мышой повернуть сцену.
А вот там где шли у же конкретные поверхности пришлось использовать feedback. Причем не выбор а отбор - gluPickMatrix. (Причем в одной из последних программ, но не в редакторе, я имена запихал прямо в дисплейные списки). Рендерить приходится конечно два раза,но.. задал переменную GLenum renderMode. И Функция Display при renderMode==GL_SELECT рендерит при отключеных наворотах -максимально быстро - т.е. фактически для выбора идет свой алгоритм прорисовки. К тому же я обычный рендер делаю по таймеру через каждые 20мс. А на время выбора просто его останавливаю.
В общем даже если на сцене 999 объектов (соотв-нно 999 names) совсем не сложно ее прорендерить для выбора еще раз. Вот если б пользователь производил действия требующие выбора со скоростью соизмеримой с компом т-да другое дело - надо было б думать
А для привязки - может быть несложно прощитать заранее какие то контрольные точки объекта заранее и просто хранить их координаты дополнительно, зато они заранее известны.
Автор: AANDREY
Дата сообщения: 14.09.2004 18:48
У мея похоже сделано, скорость не блещет. привязки все зарание посчитать не получается (перпендикуляр, пересечение). Можно гденить глянуть твою програмку?интересно как у людей получается.
Автор: SashKa
Дата сообщения: 15.09.2004 14:31
Хорошо, как притащу исходники на работу всенепременно изобразю.
Тока у меня там привязка (в том смысле, как она используется в CAD системах) отсутсвует за ненадобностью. И коментариев там нет - звиняйте, я их потом ставлю, а проеткт еще не закончен.
Может быть хотя бы для просчета перпендикуяров использовать алгоритм схожий с алгоритмом вычисления нормалей к поверхности. (в принципе не долго).

Автор: Gudguy
Дата сообщения: 16.09.2004 07:08
Если английский не проблема, то видел раздел на www.delphi3d.net как раз про создание 3d движков на OpenGL.
Автор: AANDREY
Дата сообщения: 21.09.2004 18:45
Дак можно и без исходников
Автор: PrWork1
Дата сообщения: 03.07.2011 17:01
SashKa
А Вы ещё занимаетесь этм вопросом?

Страницы: 1

Предыдущая тема: Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.