Плиз, неподскажете как можно считать геометрию из *.Х файлов в OpenGL.
Cсылки на Inernet приветствуются.
До встречи, с уважением Ilya Titov
IT> Плиз, неподскажете как можно считать геометрию из *.Х файлов в OpenGL.
IT> Cсылки на Inernet приветствуются.
я сам написал парсер текстовых X на boost.spirit, а потом на лиспе конвертер
его в удобоваримый бинарный формат.
если ты иксы можешь прямо бинарные читать, будет попроще.
а ссылки -- могу в MSDN послать и в DirectX SDK :). в принципе к OpenGL это
относится крйайне опосредованно.
)
(With-best-regards '(Alex Mizrahi) :aka 'killer_storm)
"People who lust for the Feel of keys on their fingertips (c) Inity")
04 Nov 06 , 17:46 Alex Mizrahi писал к Ilya Titov:
IT>> Плиз, неподскажете как можно считать геометрию из *.Х файлов в
IT>> OpenGL. Cсылки на Inernet приветствуются.
AM> я сам написал парсер текстовых X на boost.spirit, а потом на лиспе
AM> конвертер его в удобоваримый бинарный формат. если ты иксы можешь
AM> прямо бинарные читать, будет попроще.
AM> а ссылки -- могу в MSDN послать и в DirectX SDK :). в принципе к
AM> OpenGL это относится крйайне опосредованно.
А вот если "писать игрушку с нуля", то в чем/как удобнее хранить трехмерные
объекты? В смысле, в каком формате сохранять и какими библиотеками
читать/писать?
Самому реализовывать парсер .x или .3ds можно, но ведь наверняка кто-то уже это
сделал?
. С уважением, Hикита.
icq:240059686, lj-user:nicka_startcev
... Сектка фидомасонов
AM>> я сам написал парсер текстовых X на boost.spirit, а потом на лиспе
AM>> конвертер его в удобоваримый бинарный формат. если ты иксы можешь
AM>> прямо бинарные читать, будет попроще.
AM>> а ссылки -- могу в MSDN послать и в DirectX SDK :). в принципе к
AM>> OpenGL это относится крйайне опосредованно.
NA> А вот если "писать игрушку с нуля", то в чем/как удобнее хранить
NA> трехмерные объекты? В смысле, в каком формате сохранять и какими
NA> библиотеками читать/писать?
NA> Самому реализовывать парсер .x или .3ds можно, но ведь наверняка кто-то
NA> уже это сделал?
удобнее всего -- в том формате который подходит для игры. в моём случае я
просто сериализовал мэши и данные скелетной анимации. рагрузчик -- буквально
сотня строк простенького кода, скорость загрузки очень высока, т.к. данные
копируются из файла в память.
что включать в формат зависит от того что нужно. например, скелетная
анимация нужна? keyframe анимация нужна? какой нужен формат представления
материалов -- ну там шейдеры и проч?
теперь же об импорте. обычно высококачественный импорт делают прямо из
нативного представления в 3d-редакторе -- т.е. плагин к 3ds max, либо скрипт
на maxscript. в случае maxscript удобнее будет сперва перегнать в текстовый
формат, например, XML -- но это может тормозить для больших объёмов данных.
так же в 3d-редакторах позволяют задавать user-defined свойства объектам и
материалам, потом их можно перевести в свойства необходимые для движка, или
же можно создать helper-объекты. к примеру, некогда я делал "физику" --
прямо в 3ds max (точнее gmax) можно было задать тензор инерции и соединения
между деталями, сцена экспортировалась целиком -- и объекты с материалами, и
ассоциированная физика. причём всё было написано на maxscript + небольшой
хелпер для сериализации в файлы на C#. замечу, что целиком "движок" с
keyframe-анимацией, физикой (на том уровне что ездила машина по террейну и
летал самолётик), определением столкновений и даже скриптингом из питона я
некогда написал за пять недель (получив за это 150$) -- так что особой
сложности всё это не представляет.
если же по какой-то причине импорт самому писать не хочется, то стоит
посмотреть на готовые вещи, но тут уж в зависимости от того что надо. к
примеру, если нужна скелетная анимация -- можно взять либу Cal3D, там есть
экспортёр из 3ds max. полноценный экспортёр сцен можно найти в готовых
движках типа OGRE.
если же разбирать файлы, то для разбора 3ds есть несколько либ, лучше
всего -- 3dsftk от самого autodesk (сейчас уже не распространяется, но найти
можно -- к примеру, в составе Indirect3D). но стоит настраиваться на то, что
формат 3ds не совсем удобоварим, особенно касательно keyframe анимации, и
это не нативный формат 3ds max -- при экспорте может теряться информация или
даже возникать ошибки!
касательно формата X -- бинарный формат afaik разбирается очень просто,
руками за день можно спаять разборщик (столько же уйдёт на разбор 3rd-party
либы), а вот с текстовым -- как я описал выше ничего готового я не нашёл,
писал парсер сам.
(кстати, если нужно загрузить чисто мэш, то можно воспользоваться одним из
текстовых форматов -- они вообще простые как доска)
05 Nov 06 , 16:52 Alex Mizrahi писал к Nickita A Startcev:
NA>> А вот если "писать игрушку с нуля", то в чем/как удобнее хранить
NA>> трехмерные объекты? В смысле, в каком формате сохранять и какими
NA>> библиотеками читать/писать?
NA>> Самому реализовывать парсер .x или .3ds можно, но ведь наверняка
NA>> кто-то уже это сделал?
AM> удобнее всего -- в том формате который подходит для игры. в моём
AM> случае я просто сериализовал мэши и данные скелетной анимации.
AM> рагрузчик -- буквально сотня строк простенького кода, скорость
AM> загрузки очень высока, т.к. данные копируются из файла в память. что
AM> включать в формат зависит от того что нужно. например, скелетная
AM> анимация нужна? keyframe анимация нужна? какой нужен формат
AM> представления материалов -- ну там шейдеры и проч?
Ээ.. Ввиду большого количества малопонятных мне терминов, затрудняюсь ответить.
:)
Hужно
а) вид из рубки космического корабля - много точек (звезд), некоторое
количество близлежащих планет/Звезд/баз итд.
б) вид из окна здания на всякие деревья и ползающе-ходяче-ездящие объекты
в) карта с маркерами, трехмерная (сечения/Проекции, вращение руками/мышами)
'Hавороченность' графики пока не очень беспокоит, ибо хочется для начала
реализовать все остальное (при минимальной графике) и только потом, возможно,
браться за навороченные бак-энды.
AM> к примеру, некогда я делал "физику"
"физики" вроде как не предвидится, в смысле, не более чем детектирование
столкновений.
AM> -- прямо в 3ds max (точнее gmax)
Кстати, а что лучше/круче/удобнее, 3дмакс или майя?
AM> если же по какой-то причине импорт самому писать не хочется, то стоит
AM> посмотреть на готовые вещи, но тут уж в зависимости от того что надо.
AM> к примеру, если нужна скелетная анимация -- можно взять либу Cal3D,
AM> там есть экспортёр из 3ds max. полноценный экспортёр сцен можно найти
AM> в готовых движках типа OGRE.
А что такое "скелетная анимация"?
AM> касательно формата X -- бинарный формат afaik разбирается очень
AM> просто, руками за день можно спаять разборщик (столько же уйдёт на
AM> разбор 3rd-party либы), а вот с текстовым -- как я описал выше ничего
AM> готового я не нашёл, писал парсер сам.
Я когда-то тоже писал, но быстро скис из-за пропадания интереса.
AM> (кстати, если нужно загрузить чисто мэш, то можно воспользоваться
AM> одним из текстовых форматов -- они вообще простые как доска)
мэш - ?
. С уважением, Hикита.
icq:240059686, lj-user:nicka_startcev
... Press Shift + Reset to continue
AM>> (кстати, если нужно загрузить чисто мэш, то можно воспользоваться
AM>> одним из текстовых форматов -- они вообще простые как доска)
NA> мэш - ?
mesh, сетка.
набор точек + информация об объединении их в элементы (к примеру, полигоны).
в самом простом случае -- trimesh, т.е. набор треугольников.
задать trimesh можно разными способами. самое простое -- перечислять
непосредственно координаты вершин, по 9 числел на треугольник.
несколько лучше -- отдельный массив координат вершин, и отдельный массив
троек индексов вершин для треугольников.
ещё лучше -- объединять треуголькики в triangle strip'ы.
из второго сделать третьее может помочь, к примеру, nvtristip (хотя может
уже есть что получше)
NA> Ээ.. Ввиду большого количества малопонятных мне терминов, затрудняюсь
NA> ответить. :)
NA> Hужно
NA> а) вид из рубки космического корабля - много точек (звезд), некоторое
NA> количество близлежащих планет/Звезд/баз итд.
NA> б) вид из окна здания на всякие деревья и ползающе-ходяче-ездящие
NA> объекты в) карта с маркерами, трехмерная (сечения/Проекции, вращение
NA> руками/мышами)
NA> 'Hавороченность' графики пока не очень беспокоит, ибо хочется для
NA> начала реализовать все остальное (при минимальной графике) и только
NA> потом, возможно, браться за навороченные бак-энды.
гм, ну если тебя устроит отсутвие анимации фигур, просто экспортируй мэши с
натянутыми на них текстурами.
AM>> -- прямо в 3ds max (точнее gmax)
NA> Кстати, а что лучше/круче/удобнее, 3дмакс или майя?
ну я только с 3ds max работал. майя говорили лучше для художников чем-то, но
блин интерфейс там оччень непрямой..
AM>> если же по какой-то причине импорт самому писать не хочется, то стоит
AM>> посмотреть на готовые вещи, но тут уж в зависимости от того что надо.
AM>> к примеру, если нужна скелетная анимация -- можно взять либу Cal3D,
AM>> там есть экспортёр из 3ds max. полноценный экспортёр сцен можно найти
AM>> в готовых движках типа OGRE.
NA> А что такое "скелетная анимация"?
ну типа с её помощью можно сделать ходящих людей и проч.
для этого отдельно задаётся скелет, и отдельно рисуется шкура (мэш). потом
шкура прикрепляется к скелету -- т.е. для каждой точки шкуры подсчитывается
какая "кость" скелета на неё влияет.
а затем анимация задаётся только для костей, а шкура в реальном времени
считается нехитрой математикой.
Однажды 05.11.06 в 2:03 Nickita A Startcev (2:5030/1321.19)
написал Alex Mizrahi по поводу
-=- load *.X files -=-
NAS> А вот если "писать игрушку с нуля", то в чем/как удобнее хранить
NAS> трехмерные объекты? В смысле, в каком формате сохранять и какими
NAS> библиотеками читать/писать?
NAS> Самому реализовывать парсер .x или .3ds можно, но ведь наверняка кто-то
NAS> уже это сделал?
Скажу тебе по секрету: "игрушку с нуля" уже тоже кто-то писал. ;)
А формат хранения - дело десятое. Сначала надо сформулировать требования к
этому формату, а уж потом видно будет, что можно использовать. Один из
вариантов - самому разрабатывать формат и самому же писать для него библиотеки.
И вообще, если для тебя основное игрушка - то пусть о формате файла болит
голова у программиста, а не у тебя.
До свидания, в 12:44 MSK
Sergey
07 ноя 06 12:48, you wrote to Nickita A Startcev:
NAS>> А вот если "писать игрушку с нуля", то в чем/как удобнее хранить
NAS>> трехмерные объекты? В смысле, в каком формате сохранять и какими
NAS>> библиотеками читать/писать?
NAS>> Самому реализовывать парсер .x или .3ds можно, но ведь наверняка
Где-то валялся исходный код чтения 3DS моделей. Hо не уверен что он работает
нормально.
Vitold