Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вращение камеры(ошибка) 
:(
    Опции темы
sfok3
Дата 5.8.2009, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 14.7.2009

Репутация: нет
Всего: нет



Код

var
  matRotateSumm : TD3DMatrix;
  matRotateX : TD3DMatrix;
  matRotateY : TD3DMatrix;
  matView : TD3DMatrix;
  vektor, vUp, vEyePt, vLookatPt  : TD3DVector;
begin
vektor := D3DXVector3(0.0, 0.0, 1.0);
vUp :=  D3DXVector3(0.0, 1.0, 0.0);
D3DXMatrixIdentity(matRotateX);
D3DXMatrixRotationX(matRotateX, -Angle);
D3DXMatrixIdentity(matRotateY);
D3DXMatrixRotationY(matRotateY, -AngleZ);
D3DXMatrixMultiply(matRotateSumm, matRotateX, matRotateY);
D3DXVec3TransformNormal(vektor, vektor, matRotateSumm);
vEyePt:=  D3DXVector3(0.0, 10.0,-10.0);
vLookatPt:= vEyePt + vektor;  // ошибка
D3DXMatrixLookAtLH(matView, vEyePt, vLookatPt, vUp);

  with g_pd3dDevice do begin
       SetTransform(D3DTS_VIEW, matView);
  end;
end;


в общем нашел где то код на C, попытался перевести на Delphi:
vLookatPt:= vEyePt + vektor;  // ошибка

вроде не так складываются векторы?

Добавлено через 13 минут и 51 секунду
вот на всяк случай код на C
Код

D3DXMATRIX RotationX, RotationY, Summa;
D3DXVECTOR3 Vector(0.0f, 0.0, 1.0f);

D3DXMatrixRotationY(&RotationY, vRotation.x);//vRotation.x - угол поворота по оси X
D3DXMatrixRotationX(&RotationX, vRotation.y);//vRotation.y - угол поворота по оси Y

D3DXMatrixMultiply(&Summa, &RotationX, &RotationY);

D3DXVec3TransformNormal(&Vector, &Vector, &Summa);//находим вектор относительно матрицы

D3DXVECTOR3 From, In;
From = vCoordinate;//координата камеры

In = From + Vector;//вектор - направление камеры, сразу находим вектор для выстрела, если это от первого лица

D3DXMATRIX mView;
D3DXMatrixLookAtLH(&mView, &From, &In, &D3DXVECTOR3(0.0f, 1.0f, 0.0f));
    pDevice->SetTransform(D3DTS_VIEW, &mView);

PM MAIL   Вверх
Bitter
Дата 5.8.2009, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 6
Всего: 27



Ну вектора так нельзя складывать. 

или 

  vLookatPt.x := vEyePt.x + vektor.x;
  vLookatPt.y := vEyePt.y + vektor.y;

или

  vLookatPt.x := D3DXVector3(vEyePt.x + vektor.x, vEyePt.y + vektor.y);

или

 D3DXVec3Add(vLookatPt.x, vEyePt, vektor);

PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0978 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.