Текущий архив: 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.54 MB
Время: 0.025 c