|
3D-программирование Вопросы, касающиеся программирования 3D мира |
03.04.2009, 17:42
|
#1
|
Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
Отсечение меша плоскостью
Вот, сделал функцию, чтобы отсекать часть меша горизонтальной плоскостью. Но она работает не совсем правильно. Я копирую нужные треугольники, и преобразую те,что пересекают плоскость. И если загрузить rocket.3ds, то blitz пишет что вершины находятся не в радиусе камеры. Что я делаю не правильно?
|
(Offline)
|
|
03.04.2009, 17:52
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Отсечение меша плоскостью
ты бы показал как ты делаешь. лучше чтобы был минимальный bb и медиа.
|
(Offline)
|
|
03.04.2009, 18:45
|
#3
|
Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
Ответ: Отсечение меша плоскостью
|
(Offline)
|
|
03.04.2009, 18:52
|
#4
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Отсечение меша плоскостью
фигасе!
"Vertex Index Out of Range" это оказывается "вершины находятся не в радиусе камеры"
на самом деле это значит что ты обращаешься к несуществующим вершинам.
не
For ct=0 To CountTriangles(gs)
а
For ct=0 To CountTriangles(gs) -1
кстати, твоя функция работает весьма и весьма криво. я бы даже сказал что она совсем не работает. и еще, нафиг ты ее вызываешь в главном цикле?
я бы на твоем месте просто бы плющил верхушку.
Последний раз редактировалось HolyDel, 03.04.2009 в 19:02.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
|
|
03.04.2009, 19:39
|
#5
|
Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
Ответ: Отсечение меша плоскостью
Да, я согласен, что сильно кривая функция,но я бы её оптимизировал. 'плющил верхушку'- в смысле fit mesh или двигать вершины mesha. Но если вверху модель широкая, и к низу сильно сужается. Тогда способ создания будет виден. И еще включи wireframe и жми кнопку вверх (это как бы двигать плоскость вверх и становится видно как строится mesh). И значит если поменять эту строку то все работает.
P.s. я в blitz работал мало и сделать такую функцию способ научится работать с геометрией и также смогу использовать это в игре.
|
(Offline)
|
|
03.04.2009, 19:44
|
#6
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Отсечение меша плоскостью
в блитце индексы вертексов треугольников сурфейсов начинаются с единицы !!!
For ct=1 To CountTriangles(gs)
__________________
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо tormoz за это полезное сообщение:
|
|
03.04.2009, 20:07
|
#7
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Отсечение меша плоскостью
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,....
короче тот же код, только в профиль.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.04.2009, 00:44
|
#8
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Отсечение меша плоскостью
да нет в принципе разницы
кроме того, что треугольника с индексом 0 не существует
__________________
|
(Offline)
|
|
04.04.2009, 16:11
|
#9
|
Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
Ответ: Отсечение меша плоскостью
Обновил функцию, и теперь она работает, но не правильно. Не правильно строятся треугольники, пересеченые с плоскостью. И если сделать активными 2 строчки создания треугольника elseif c=2, то появляются треугольники идущие в бесконечность (прикольно, но мне нужно другое). Попробуйте в mesh загружать 3 модели в архиве или создать вместо него конус, куб, сферу, и посмотрите как стоятся треугольники. Управление смотрите в коде. Качать во 2 посте.
http://blitz.pp.ru/forum/showthread....7663#post57663
|
(Offline)
|
|
04.04.2009, 17:27
|
#10
|
Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
Ответ: Отсечение меша плоскостью
Вот, смотрел телек и догнал, что не так. Надо все переменные kv у меня не целыми сделать, ну т.е. перед kv решетку поставить надо. Тогда треугольники ложатся правильно. Но остальные проблемы остались.
|
(Offline)
|
|
04.04.2009, 23:05
|
#11
|
Бывалый
Регистрация: 25.12.2007
Адрес: г. Краснодар
Сообщений: 894
Написано 421 полезных сообщений (для 1,079 пользователей)
|
Ответ: Отсечение меша плоскостью
Помню, был такой пример на офф сайте блица
|
(Offline)
|
|
05.04.2009, 13:00
|
#12
|
Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
Ответ: Отсечение меша плоскостью
Всё! Исправил все ошибки. Теперь качайте там же, в последнем посте.
|
(Offline)
|
|
05.04.2009, 18:02
|
#13
|
Бывалый
Регистрация: 25.12.2007
Адрес: г. Краснодар
Сообщений: 894
Написано 421 полезных сообщений (для 1,079 пользователей)
|
Ответ: Отсечение меша плоскостью
хороша фича, для появления персов можно применить,
|
(Offline)
|
|
05.04.2009, 18:52
|
#14
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Отсечение меша плоскостью
или резать перцов на куски ! (кровожадно)
расчлененка рулит
пошел писать концепт для аркады "Пила"
домохозяйки оценят
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо tormoz за это полезное сообщение:
|
|
05.04.2009, 20:36
|
#15
|
Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
Ответ: Отсечение меша плоскостью
Как ты догадался? Именно для этого я и делал это! Но функция не закончена. Надо еще сделать плоскость, прикрывающую внутреннюю часть меша. И если разделяющая плоскость разделит меш
не на 2, а на 3 части. Надо, чтобы каждый был отдельным объектом.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:35.
|