Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.037 c
8-1080846684
?
2004-04-01 23:11
2004.06.13
как отловить изменения экрана?


14-1085430071
European
2004-05-25 00:21
2004.06.13
Временные диаграммы RS232


1-1085850377
ltexcimer
2004-05-29 21:06
2004.06.13
обработка ошибок


14-1085419845
Lm
2004-05-24 21:30
2004.06.13
shell+XP


6-1082656646
Deff
2004-04-22 21:57
2004.06.13
Определение принадлежности к LAN.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский