Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

DX3D   Найти похожие ветки 

 
TButton ©   (2003-08-05 08:34) [0]

Можно маленький тьютор по исп. Delphix D3D.
1. как создать простейшую сцену
2. как работать с камерой
3. и с чем ваще ето все едят.

если есть ссылки на что-то подобное - буду благодарен.


 
TButton ©   (2003-08-05 14:53) [1]

up


 
pasha676   (2003-08-05 17:01) [2]

Все ответы на твои вопросы содержаться в примерах работы с DelphiX. Я изучал по ним и по исходникам. Получилось. В общем
1. Разместить в нужных местах нужные компоненты, направить их в нужную сторну.
2. Разместить в нужном месте в нужную сторну. Камера такой же обычный объект как и все остальное.
3. Смотри примеры.

Не по примерам я сделал собственно две вещи
1. Иерархию визуальных объектов
2. Управление отдельными пикселами в объекте

Удачи


 
TButton ©   (2003-08-06 23:29) [3]

ну вот пытаюсь я разобраться в примере (куб).... но столько новых понятий вектор, вертекс, нормаль... примерно ето я все знаю, но отсутствие хелпа несколько все затрудняет...


 
pasha676_*   (2003-08-07 13:40) [4]

Проясню. Вектор - три значения (x,y,z).
Это соответственно координаты (для положения точки в пространстве) или длины прекции вектора на соответствующие координатные оси.
Иными словами под вектором в ДельфиХ может подразумеваться и положение п пространстве и ориентация.
Расположение трехмерного объекта в пространстве задается тремя векторами (девятью координатами)
1) вектор положение.
2) вектор направления. Куда смотрит "перед" объекта
3) вектор вверха. Куда смотрит "вверх" объекта.

Вертекс - вершина из объекта (ну например того же куба). Точка. Положение этих точек в в ДельфиХ считаються помоему относительно центра объекта. Возьми куб в примере, побеорись до его вертекса и смести его программно. Прикольно получается.
Нормаль. Все дело в том что весь мир (с точки зрения трехмерных ускорителей :)) состоит из фэйсов, треугольников, заданных тремя вертексами. Но эти фэйсы имеют как бы лишь одну закрашенную, непрозрачную сторону. Вторая абсолютно прозрачна и если глядеть на нее с этой стороны ты этот фэйс просто не увидишь. Камень преткновения новичков в 3DMax зачастую - "А почему у меня часть вазы не видно". Какая из двух сторон будет закрашена решает как раз вектор нормали. В какую сторну он направлен, та и закрашена. На самом деле все посложнее (особенно когда идет раскраска и сглаживание), но ты туда пока не лезь. Да и в директе это и не нужно.


 
TButton ©   (2003-08-07 16:39) [5]

почти понятно.
function MakeD3DVertex(hv, nv: TD3DVector; tu, tv: TD3DValue): TD3DVertex;
begin
 Result.x := hv.x;  // вектор положения.
 Result.y := hv.y;
 Result.z := hv.z;
 Result.nx := nv.x; // вектор нормали
 Result.ny := nv.y;
 Result.nz := nv.z;
 Result.tu := tu;   // а ето что
 Result.tv := tv;   // за фигулины?
end;


 
pasha676_*   (2003-08-07 17:20) [6]

А вот этого я не знаю. По моему вертекс - есть точка. Зачем точке четыре трехмерных набора координат? Непонятно. А без них никак? Ничего не работает что ли? Ну и в исходничках порыться надо. В примерах такого нет помоему.


 
VitGun ©   (2003-08-07 18:02) [7]

2 TButton pasha767_*
Result.tu := tu;   // а ето что
Result.tv := tv;   // за фигулины?
IMHO это текстурные координаты.
З.Ы. Хотя я могу и ошибаться.



 
TButton ©   (2003-08-07 23:01) [8]

2 VitGun
 точно! вспоминаем 3D Max и UV мапинг.
2 pasha676_*
 как видишь результат функции - D3DVertex. это выдержка из юнита... забыл как обзывается вобще в примере (куб) помоему в он креейте вся  ета муть, создаются вертексы для плоскостей куба.


 
m-AAA-d   (2004-02-04 14:46) [9]

paha676<b/> - агроменное спасибо!
> Расположение трехмерного объекта в пространстве задается тремя > векторами (девятью координатами)
> 1) вектор положение.
> 2) вектор направления. Куда смотрит "перед" объекта
> 3) вектор вверха. Куда смотрит "вверх" объекта.
- вот с последним я долго не мог разобраться - что они всетаки значат... наконец то понял - еще раз спасибо!
а еще вот по этому адресу - http://netlib.narod.ru/ есть замечательная книжка Стена Трухильо "Программирование графики в ДиректДДД" - не до конца еще выложили, но она многое объясняет начинающему.


 
NailMan ©   (2004-02-04 18:05) [10]

TButton ©
Result.tu := tu;   // а ето что
Result.tv := tv;   // за фигулины?

2-мерные текстурные координаты это.


00 -------- 11
|            |
|            |
|            |
|            |
01 -------- 11


Вот так это и выглядит.


 
NailMan ©   (2004-02-04 18:06) [11]

Упс - ошибочка в правом верхнем углу координаты "10"


 
m-AAA-d ©   (2004-02-05 16:49) [12]

NailMan
извини, но может быть ты сможешь мнепомочь? тема такая: создаю несколько сфер в одном фрейме, заставляю их вращаться (все вместе разумеется), но каждой сфере назначаю свою текстуру. в результате же я получаю вращающиеся сферы, но закрашенные той текстурой, что грузилась последняя. можно сделать чтонить, чтобы добиться нужного мне результата?


 
NailMan ©   (2004-02-06 10:21) [13]

как ты отрисовываешь сферы? в виде чего ты из юзаешь? ID3DXMesh или вручную через VB/IB?

главный принцип отрисовки с текстурами(на примере ID3DXMesh):

//устанавливаем матрицу трансформаций
Dev.SetTransform(D3DTS_WORLD, matrix);
for i:=0 to MaterialCount-1 do
begin
 //устанавливаем материал
 Dev.SetMaterial(Material[i]);
 //устанавливаем текстуру для материала i
 Dev.SetTexture(0,Texture[i]);
 //рендерим меш
 mesh.Drawsubset(i);
end;
end;

соответсвенно примерно так должен выглядеть метод Render у твоих сфер.


 
Sapersky ©   (2004-02-06 11:02) [14]

замечательная книжка Стена Трухильо "Программирование графики в ДиректДДД

Это по DirectDraw. А по D3DRM см. "Секреты программирования трёхмерной графики под Windows 95" Найджела Томпсона.
Кстати, упомянутая версия Win в данном случае - хороший повод задуматься о современности выбранной технологии :)


 
m-AAA-d ©   (2004-02-06 17:34) [15]

код у меня такой:

for i:= 1 to GalaxyMap.Count do begin
  s:= ExtractFilePath(Application.ExeName) +
      GalaxyMap.Star[i-1].Texture;
//---  Setting up MeshBuilder  ---------------------------
  DXDraw.D3DRM.LoadTexture(PChar(s), Texture);
  MeshBuilder.SetColor(D3DRGB(1, 1, 1));
  MeshBuilder.SetTexture(Texture);
//---  Setting up MeshFrames 1st level (stars)  ----------
  DXDraw.D3DRM.CreateFrame(MeshFrame, dMeshFrame);
  dMeshFrame.SetPosition(MeshFrame, GalaxyMap.Star[i-1].X,
    GalaxyMap.Star[i-1].Y, GalaxyMap.Star[i-1].Z);
//---  Create wrap  --------------------------------------
  dMeshFrame.AddVisual(MeshBuilder);
  CreateWarp(D3DRMWRAP_CHROME, MeshBuilder, dMeshFrame);
  dMeshFrame:= nil;
end; MeshBuilder:= nil;

седня попробую проверить совет данный мне Sapersky - попробую текстуру присваивать непосредственно фрейму. завтра отпишусь.


 
m-AAA-d ©   (2004-02-09 10:23) [16]


> Это по DirectDraw. А по D3DRM см. "Секреты программирования
> трёхмерной графики под Windows 95" Найджела Томпсона.
- могет быть, могет быть... но директДДД там тоже неплохо описан. щас Найджела тоже сохраню и почитаю.
а насчет современности технологии: винды никуда не делись, а директХ продолжает удивлять нас своими новыми версиями, так что... ;) технология живет и развивается.
с текстурами пока не прет, впрочем у меня было маловто времени, чтобы поразбираться


 
Sapersky ©   (2004-02-10 10:14) [17]

Я имею в виду современность D3DRM. Его развитие заканчивается на DX6... причём невозможно использовать некоторые функции даже этой версии (напр., мультитекстурирование). Загрузить/покрутить модельку - тут RM ещё более-менее подходит, но когда пытаешься сделать что-нибудь продвинутое (динамически изменяющуюся модель, текстуры с альфа-прозрачностью) - начинаются проблемы...
В DX8-9 MS в качестве замены RM включила в библиотеку D3DX средства для работы с моделями (см. пример NailMan"а). Вообще получилось несколько сложнее, чем в RM, но зато при необходимости можно работать на низком уровне (копаться непосредственно в полигонах), плюс поддержка современных ускорителей.
Кстати, если сферы в данном случае изображают звёзды, то это немного извращение, даже для RM. В нём, точно помню, есть спрайты, в смысле биллборды - квадраты из двух треугольников, всё время повёрнутые к камере. Как именно делается - у Н.Томпсона должно быть...


 
m-AAA-d ©   (2004-02-11 14:03) [18]

с текстурами разобрался по ходу дела.
еще вопрос: можно ли одновременно с трехмеркой (всякие там перемещающиеся объекты - у меня сферы) выводить на экран двумерную графику, конкретно я хочу устроить чтото вроде сайдбара на котром будет отображаться инфа скажем о выбранном объекте. объясните технологию процесса плиз.


 
NailMan ©   (2004-02-12 10:00) [19]

m-AAA-d ©
конечно можно - создается VB с форматом XYZRHW + diffuse+tex1 и в него заносишь точки треугольников(trianglelist) с координатами(xyz и uv) в экранной системе отсчета. Ну а далее выводишь их одним Drawprimitive.

Вобщем
http://www.cyborghome.ru/nailman/zakroma/sources/d3dfonts.zip

Архив содержит модуль с классом - GUIBuffer-ом. Который и использует эту технологию. Также в архиве лежит модуль с классом шрифтов используемых в моей игре, которые также построены на этой технологии(правда чуть-чуть по другому использует). Самих шрифтов пока не прилагаю - дома забыл.


 
Sapersky ©   (2004-02-12 10:57) [20]

можно ли одновременно с трехмеркой (всякие там перемещающиеся объекты - у меня сферы) выводить на экран двумерную графику

Если это всё ещё RM, то см. DirectDraw и С.Трухильо. Обычный блиттинг нормально работает. Если DX8-9, см. ответ Nailman"а.


 
A22   (2004-02-13 03:52) [21]

вообще практически все, что вы обсуждали, есть в примерах Microsoft, входящих в SDK под DirectX. так что если чего не получается - прямая дорога к эти примерам


 
A22   (2004-02-13 03:53) [22]

а заодно и на Visual C++


 
cyborg ©   (2004-02-13 08:55) [23]

[22] A22   (13.02.04 03:53)
А может ещё и ключи от квартиры, где деньги лежат?


 
NailMan ©   (2004-02-13 09:29) [24]

A22
И заодно к Visual Basic и Exel(на нем тоже игры пишут)


 
A22   (2004-02-13 17:32) [25]

NailMan
по-твоему VC++ равноценен VB /Exel в области программирования игр?


 
NailMan ©   (2004-02-15 23:55) [26]

Нет это сарказм. Просто твой постинг A22   (13.02.04 03:53) [22] - очередной намек на holey wars.
Для игр C++ и Delphi равноценны при наличии головы и прямых рук.


 
Vertex   (2004-02-16 03:08) [27]

Repeat если руки такие ровные писать надо на асме
A22 имел в виду, что платформа Visual"а имеет преимущество в том, что производители поставляют сдк именно к ней


 
cyborg ©   (2004-02-16 10:38) [28]

[27] Vertex
На прошлой неделе я диск купил DirectX 9 SDK, никакого визуала там нет ;)


 
Sapersky ©   (2004-02-16 10:49) [29]

На прошлой неделе я диск купил DirectX 9 SDK, никакого визуала там нет ;)

А примеры что, на Delphi? :)


 
cyborg ©   (2004-02-16 10:51) [30]

[29] Sapersky ©
А какая разница? И там и там одинаково делается, только типы данных иногда по разному называются.


 
Vertex   (2004-02-17 01:06) [31]

дада иногда... убеждать в том что ты и так понимаешь не буду
если успокоит то для меня делфя тоже очень дорога и вижуал не люблю, но стараюсь объективно смотреть на тему



Страницы: 1 вся ветка

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.037 c
3-1085398790
Andrey
2004-05-24 15:39
2004.06.13
Открытие таблицы MySQL


4-1083416802
Hawk
2004-05-01 17:06
2004.06.13
Перехват сообщения из окна чужого приложения


14-1085381996
guest_Dmitry
2004-05-24 10:59
2004.06.13
Возможно ли в html файле запретить копирование?


14-1085407404
dimm22
2004-05-24 18:03
2004.06.13
Нужна ваша помощь ! Помогите убедить колегу.


4-1084034112
Sur
2004-05-08 20:35
2004.06.13
Окно на чистом API.