Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 24.12.2011, 00:12   #16
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: DirectX 9 доступ к вершинам объекта

Хммм... А как же мне делать свою систему коллизий если позиция вершин отлична от позиции объекта(даже близко к вершинам)?Переводить их из локального пространства в мировое?
(Offline)
 
Ответить с цитированием
Старый 24.12.2011, 00:22   #17
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: DirectX 9 доступ к вершинам объекта

Храниш у каждого объекта позиции, у каждого объекта делаешь метод draw, который перед отрисовкой генерит матрицу и делает ее текущей. Колиззии как делать, смотришь позиции нужных объектов, если входит в bounding box, то уже проходишьтя по плоскостям, тут я тебе не советчик, проще взять физический движок
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mind (24.12.2011)
Старый 03.01.2012, 18:57   #18
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: DirectX 9 доступ к вершинам объекта

Не могу понять что делаю не так, но позиция вершин остаётся прежней при развороте,масштабировании объекта.
Вот как я считываю позицию вершин:
Vertex* vertices;
//---Цикл---
model.pMesh->LockVertexBuffer(0,reinterpret_cast<VOID**>(&vertices));
Text("Вершина0=",vertices[0],50,250);
Text("Вершина1=",vertices[1],50,300);
Text("Вершина2=",vertices[2],50,350);
model.pMesh->UnlockVertexBuffer();  //разблокировать буфер
Почему выводится одно и тоже число при повороте объекта. Ведь как мне известно при развороте изменяются вершины объекта.
(Offline)
 
Ответить с цитированием
Старый 03.01.2012, 19:49   #19
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: DirectX 9 доступ к вершинам объекта

при повороте меняется матрица трансформации.
но не сетка.
(Offline)
 
Ответить с цитированием
Старый 03.01.2012, 20:17   #20
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: DirectX 9 доступ к вершинам объекта

при повороте меняется матрица трансформации.
но не сетка.
Хорошо. А что мне нужно сделать чтоб позиции вершин были в мировой системе координат?
(Offline)
 
Ответить с цитированием
Старый 03.01.2012, 22:16   #21
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: DirectX 9 доступ к вершинам объекта

Умножить локальные координаты вершины на мировую матрицу.
С любовью, кэп.
(Offline)
 
Ответить с цитированием
Старый 03.01.2012, 23:35   #22
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: DirectX 9 доступ к вершинам объекта

Как правильно это сделать?
(Offline)
 
Ответить с цитированием
Старый 03.01.2012, 23:58   #23
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: DirectX 9 доступ к вершинам объекта

vertexWorldPosition = worldMatrix * vertexLocalPosition
(Offline)
 
Ответить с цитированием
Старый 04.01.2012, 00:09   #24
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: DirectX 9 доступ к вершинам объекта

Прочитай книжку уже наконец!!! Хватит всех мучить.
Пример задания матрицы для объекта, перед его отрисовкой
D3DXMatrixRotationX(&matRotateX, indexv);
        indexv = 0.0;
        D3DXMatrixRotationY(&matRotateY, indexh);
        indexh = 0.0;
        D3DXMatrixMultiply(&matRotateResY, &matRotateIn, &matRotateY);
        D3DXMatrixMultiply(&matRotateResX, &matRotateIn, &matRotateX);
        D3DXMatrixMultiply(&matRotateRes, &matRotateResX, &matRotateResY);
        d3ddev->SetTransform(D3DTS_WORLD, &matRotateRes);
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:42.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com