![]() |
Модераторы: Rickert |
![]() ![]() ![]() |
|
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
arilou, у меня повремянка, и качать 18 (или сколько там) мегов, мне не оч удобно... да и вопрос помоему не такой уж сложный
![]() -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 6 Всего: 61 |
Чисто для интереса - Mesh Serializer из Огра:
Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
Я так понял, что у тебя объект состоит из нескольких объектов. Например человек состоит из рук, ног, головы - это всё отдельные объекты. тогда ты идёшь по всем объектам, получаешь кол-во трианглов в каждом и умножаешь на 3 - получаешь кол-во вершин. это если ты используешь трианглы. А если у тебя все полигоны с разным количеством вершин - то тебе надо брать кол-во вершин каждого и суммировать их у всех подобъектов. Это ты получишь кол-во вершин. Но тебе ведь надо выделить память под массив значений координат, тогда ты должен полученное число ещё умножить на 3 - XYZ - три координаты. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Rickert, да объект состоит из нескольких объектов. а буфер на это всё один, но какой смысл суммироваться все вершины? ведь каждый подъобъект я отрисовываю поочереди, можно ли в таком случае, если в первом объекте 100 вершин, а во втором 200 завести буфер на 200? при отрисовке первого объекта я заполню его только ста вершинами и их отрисую, а потом в этот буфер скину 200 вершин... или это не правельно?
-------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 5 Всего: 27 |
Нет, не правильно. Будет всё сильно тормозить, так как для заполнения буфера на каждом кадре, его нужно запирать, а это "тормознутая" операция. Надо делать так, как сказал Rickert, т.е. подготовить буфер сразу для всех вершин. А потом рисовать какую-то его часть.
|
|||
|
||||
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Bitter, но я расчитываю производить некоторые действия с вершинами (перемещения к римеру) для этого же то же надо открывать и закрывать буфер
Кстати, в твоеё редмишке (из архива) было написано, что нормаль полученные из ASE файла не правельны, как тогда можно для треугольника их раситать? Это сообщение отредактировал(а) ZC1989 - 30.12.2006, 17:01 -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 6 Всего: 52 |
ZC1989, во-первых - никто не делает объект состоящий из нескольких объектов. Как ты анимацию собираешься организовывать?
Во-вторых - такты процессора намного важнее количества использованной памяти -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
DragonFire |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 14.8.2005 Где: Москва Репутация: 5 Всего: 9 |
http://forum.vingrad.ru/index.php?showtopi...st&p=953774 |
|||
|
||||
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
DragonFire, спасибо! то что надо!
![]() С наступающим ВСЕХ!!! ![]() -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 5 Всего: 27 |
Для этого используют матрицы трансформаций. Хотя с помощью матриц, не сделаешь, например анимацию воды или морфинг. В этом недостаток буфера вершин и соответственно всего DirectX. Хотя может я просто не знаю как это делать матрицами. |
|||
|
||||
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Bitter, я не хочу матрицы использовать дирекстовые... да и мой метод, когда на каждый кадр я открываю и закрываю буфер не тормозит, фпс на месте остаётся... подъобъектов на 1500 полигонов
Добавлено @ 01:21 правда они без текстур, да и не все параметры заданы... но мне кажется для игры достаточно, ведь яж не только изменять размеры собираюсь Rickert, а что с анимацией?! я не зарекаюсь, но думаю о скелетной анимации, а мне парень, рисующий 3Д описал эту анимацию как привязку некоторых объектов к "ключам" неким точкам (на типе внетренней системы координат) -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 5 Всего: 27 |
ZC1989, 1500 полигонов это же понт! Одна только более менее ровная сфера уже 1000 полигонов. А если планету делать, то еще и полупрозрачная атмосфера таких же размеров. Если использовать матрицы, 10-15 тысяч с текстурами, полупрозрачностью и прочей ерундой отлично работает.
Rickert, как это никто не делает? А как же по твоему делается разрушение объекта? Например, разрушение стены из кирпечей или отпадание колес автомобиля? Именно так. Автомобиль - массив из подобъектов (колеса, двери и т.д.). Каждый подобъект содержит матрицу трансформаций. Чтобы сделать анимацию колеса, например, изменяешь его матрицу одной строчкой в программе и всё! Я делал анимацию человекообразного робота именно матрицами. Он умел ходить как человек и падать, когда его убиваешь. |
|||
|
||||
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
Bitter, в прошлых попытка сделать draw'илку объекта у меня уже на 500 полигонов фпс падало в 2 раза, тем более для моей сцены я не думаю что отрисовка всех объектов разом привысит 3000 полигонов. я конечно попробую забивать все вершины в один буфер, но как тогда производить перемещение внутренней матрицы?! раньше я передавал в функцию вектор направления и точку центра, получал глобальные координаты, а сейчас как?
![]() -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 5 Всего: 27 |
Напимер, ты нарисовал объект в Max'e с координатами 0,0,0.
Импортировал его. В инициализации пишешь Matrix := IdentityMatrix; Это сброс матрицы. Чтобы переместить объект в пространстве пишешь: Matrix._41 := x; Matrix._42 := y; Matrix._43 := z; Перед рендерингом пишешь D3Device.SetTransform(D3DTS_WORLD, Matrix); А потом уже рендеришь функцией DrawPrimitive ... И всё. Объект отрисуется в координатах x,y,z Если нужно повернуть объект вокруг оси пишешь: SetRotateXMatrix(Matrix, Angle); // Поворот по оси Х Angle - угол в радианах Масштаб: SetScaleMatrix(Matrix, x, y, z) |
|||
|
||||
ZC1989 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 468 Регистрация: 17.7.2006 Где: Нижний Новгород; Россия Репутация: нет Всего: 1 |
DragonFire, я по твоей статье сделал функцию получения нормалей, все расчёты правельны, но почему-то получается некая фигня... я прикрепил скреншот того что мне кажется странным...
а вот кусочек кода где нормаль присываиваются к вершинам
так как источник света определён в другой части проги приводить его не буду Это сообщение отредактировал(а) ZC1989 - 1.1.2007, 17:43 Присоединённый файл ( Кол-во скачиваний: 8 ) ![]() -------------------- озарение настанет позже, когда поймём больше... (Сo. Stigmata) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |