{{notification.text}}

MirGames

Genco
30.09.11 06:10
0
Здравствуйте, игроделы!
Такая проблема: при написании программы столкнулись с задачами несколько превышающими нашу компетентность, особенно мою лично. Программа *грубо говоря* читает 3D модельку из OBJ-файла, после чего выводит её как картинку (сделано), фиксированное сечение, произвольное сечение и проекцию одну. Далее кривые и модельку можно двигать, это уже дело техники...
Модель данных - точки, треугольники, всё корректно заполнено.

Но вот в чем проблема: при построении сечения либо точки получаются неупорядоченными, тогда надо решать задачу о построении невыпуклой оболочки, либо изначально точки для сечения добавлять в нужном порядке.
Сейчас рассматривается 2й вариант, потому что на C# (язык проекта) 1й вариант решался плохо и через чужие библиотеки.
Точек в модельке несколько десятков тысяч (30-50), потому алгоритм расстановки числовых ссылок на соседей просто умирает. (надо перебрать их все, найти соседние по ребру, выставить где-нить как индексы...)

Вопросы вот в чем: имея такие исходные данные, как лучше получать сечение трехмерной модельки несложной (ну хотя бы банально плоскостью XZ) - какой из 2 вариантов адекватнее и есть ли специальный, про который я не знаю?
Ну или лучше: как быстро заполнить "соседей" у треугольников, индексацию можно бы и сохранять, но на моем ноуте алгоритм пока загибается намертво.
Возможно, лучше раскопать специальный движок? Беда в том, что они все графические и предоставляют немного другой функционал, игровые потому что.

Приветствуется любая помощь, буду рад советам.
#1
аксакал
30.09.11 16:27
0
Добро пожаловать на форум MirGames!
Если устроит, то задачу можно решить графически (без построения триангулированной геометрии сечения), общий ход действий в таком случае:
- Чистим стенсил
- Включаем стенсил тест и запись в него
- Рисуем нелицевые полигоны модели
- Выключаем запись в стенсил
- Рисуем полигон плоскости сечения
- Выключаем стенсил тест
- Рисуем лицевые полигоны модели
Отредактировано: 30.09.11 16:29
#2
Genco
01.10.11 03:13
0
Я очень извиняюсь за невежество, но графика, видимо, пока не мой конек. Потому: что такое стенсил?

Задача вообще такая: имеется информация о модели в OBJ, она трехмерная, точки и треугольники. На выходе требуется вывести в 2D кривую, являющуюся сечением модели известной плоскостью. Выводится это при помощи обычных примитивов, предоставляемых WPF.
На данный момент сведено любителями к задаче о поиске соседних треугольников для каждого, с целью упорядочения точек сечения (зная соседей, можной дойти, в каком порядке идут точки ), но скорость заполнения соседей N^2, на десятках тысяч не годится.

Т.е. никак не выходит получить "полигон плоскости сечения", его незакрашеным хочется, как контур.

Поясните, пожалуйста - что делается не так и где этот "стенсил", в какой разновидности технологий, а то неясно что гуглить пока.
#3
18.08.15 21:56
0

Берете и читаете описание структуры obj
далее построчно парсите(и рисуете) полигоны
потом крутите получившуюся модель как вам надо и все.
Если написать загрузчик obj не под силу-возьми из сети.

#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}