![]() |
Отсечение меша плоскостью
Вот, сделал функцию, чтобы отсекать часть меша горизонтальной плоскостью. Но она работает не совсем правильно. Я копирую нужные треугольники, и преобразую те,что пересекают плоскость. И если загрузить rocket.3ds, то blitz пишет что вершины находятся не в радиусе камеры. Что я делаю не правильно?
|
Ответ: Отсечение меша плоскостью
ты бы показал как ты делаешь. лучше чтобы был минимальный bb и медиа.
|
Ответ: Отсечение меша плоскостью
Тут браузер у меня глючит. Вообщем качайте тут -
http://blitz.pp.ru/forum/showthread....&threadid=4432 . |
Ответ: Отсечение меша плоскостью
фигасе!
"Vertex Index Out of Range" это оказывается "вершины находятся не в радиусе камеры" на самом деле это значит что ты обращаешься к несуществующим вершинам. не For ct=0 To CountTriangles(gs) а For ct=0 To CountTriangles(gs) -1 кстати, твоя функция работает весьма и весьма криво. я бы даже сказал что она совсем не работает. и еще, нафиг ты ее вызываешь в главном цикле? я бы на твоем месте просто бы плющил верхушку. |
Ответ: Отсечение меша плоскостью
Да, я согласен, что сильно кривая функция,но я бы её оптимизировал. 'плющил верхушку'- в смысле fit mesh или двигать вершины mesha. Но если вверху модель широкая, и к низу сильно сужается. Тогда способ создания будет виден. И еще включи wireframe и жми кнопку вверх (это как бы двигать плоскость вверх и становится видно как строится mesh). И значит если поменять эту строку то все работает.
P.s. я в blitz работал мало и сделать такую функцию способ научится работать с геометрией и также смогу использовать это в игре. |
Ответ: Отсечение меша плоскостью
в блитце индексы вертексов треугольников сурфейсов начинаются с единицы !!!
For ct=1 To CountTriangles(gs) |
Ответ: Отсечение меша плоскостью
tormoz, я вот тут подумал а есть ли разница?
например TriangleVertex принимает параметр в 0..(ct-1). т.е в твоем случае прийдеся писать так: for ct = 1 to counttriangles(gs) TriangleVertex(gs,ct-1,.... а в моем for ct = 0 to counttriangles(gs)-1 TriangleVertex(gs,ct,.... короче тот же код, только в профиль. |
Ответ: Отсечение меша плоскостью
да нет в принципе разницы
кроме того, что треугольника с индексом 0 не существует :) |
Ответ: Отсечение меша плоскостью
Обновил функцию, и теперь она работает, но не правильно. Не правильно строятся треугольники, пересеченые с плоскостью. И если сделать активными 2 строчки создания треугольника elseif c=2, то появляются треугольники идущие в бесконечность (прикольно, но мне нужно другое). Попробуйте в mesh загружать 3 модели в архиве или создать вместо него конус, куб, сферу, и посмотрите как стоятся треугольники. Управление смотрите в коде. Качать во 2 посте.
http://blitz.pp.ru/forum/showthread....7663#post57663 |
Ответ: Отсечение меша плоскостью
Вот, смотрел телек и догнал, что не так. Надо все переменные kv у меня не целыми сделать, ну т.е. перед kv решетку поставить надо. Тогда треугольники ложатся правильно. Но остальные проблемы остались.
|
Ответ: Отсечение меша плоскостью
Помню, был такой пример на офф сайте блица
|
Ответ: Отсечение меша плоскостью
Всё! Исправил все ошибки. Теперь качайте там же, в последнем посте.
|
Ответ: Отсечение меша плоскостью
хороша фича, для появления персов можно применить,
|
Ответ: Отсечение меша плоскостью
или резать перцов на куски ! (кровожадно)
расчлененка рулит пошел писать концепт для аркады "Пила" домохозяйки оценят |
Ответ: Отсечение меша плоскостью
Как ты догадался? Именно для этого я и делал это! :) Но функция не закончена. Надо еще сделать плоскость, прикрывающую внутреннюю часть меша. И если разделяющая плоскость разделит меш
не на 2, а на 3 части. Надо, чтобы каждый был отдельным объектом. |
Ответ: Отсечение меша плоскостью
не надо плоскость
засунь туда эммитер с кровищей и все дела :))) |
Ответ: Отсечение меша плоскостью
Вот у меня возник вопрос: как получить индекс треугольника, который только что создал? Или треугольники идут в том порядке, в котором я их создал?
|
Ответ: Отсечение меша плоскостью
tri = AddTriangle (surf,v0,v2,v1)
tri - возвращает индекс |
Ответ: Отсечение меша плоскостью
http://nirvana.sk/storm/herni_denik/...f_darkness.jpg
Я опять про расчлененку, Блейд оф даркнесс например |
Ответ: Отсечение меша плоскостью
А разве там можно рубить в любом месте? Обычно получается только голову, руку, ногу.
|
Ответ: Отсечение меша плоскостью
Кстати, чтобы накрыть объект плоскостью надо скопировать newmesh в функции , перевернуть треугольники и назначить цвет (это сделать надо до текстурирования). Есть еще один способ, но он подойдет только для выпуклых моделей. И я забыл обновить нормали перед renderworld. А как определить на сколько частей поделило? Может как-то можно это сделать прямо в physX?
|
Ответ: Отсечение меша плоскостью
Помогите реализовать код!!!
Хочу, сделать чтобы при отсечении меша на более чем 2 части, они все становились отдельными мешами. До цикла создаю двухмерный массив, где хранятся все связи треугольников(поэтому долго идет черный экран при высокополигональной модели - mesh2.3ds), и создаю двухмерный массив grup, в котором будут группы треугольников разных частей и обычный массив для обработки. Потом в функции заполняю список треугольников нового меша( есть индекс- треугольник существует, 0-треугольника нет). Итак, я хочу сделать вот что: Если есть треугольник, то создаем новую группу в массив grup, добавляю его в группу. Потом все треугольники, с которыми связан данный треугольник добавляю в массив для обработки. Дальше выполняю то же самое для каждого треугольника, из массива добавляя в ту же группу. Естесственно надо проверять существует ли треугольник, и удалять обработанные данные из обрабатываемого массива. Когда в обрабатываемом массиве не будет ничего, создаем новую группу и обрабатываем необработанные треугольники. И так далее, пока не кончатся треугольники. З.Ы. Надеюсь я все правильно и понятно объяснил. И качать там же в конце. http://blitz.pp.ru/forum/showthread....&threadid=4432 |
Часовой пояс GMT +4, время: 04:38. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot