Цветной MESH

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Цветной MESH

Сообщение Bonesnapper » 25.02.2005 (Пт) 22:46

Как нарисовать MESH с цветами различных частей таких же как и матерриал без использования света
с включенным светом все работает:
For i = 0 To NumMaterialsTank - 1&
d3dDevice.SetMaterial mat
Tank.DrawSubset i
Next

а если отключить то все рисуется одним цветом :cry:

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 26.02.2005 (Сб) 1:18

да, так и должно быть. в мешах используется структура D3DVERTEX которая не содержит цветовой составляющей, что исключает цвет все модельки. остается только материал
ХЎ

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 26.02.2005 (Сб) 8:29

Помнится в DX7 .x файлы грузились и рендерились напрямую... Вот там можно было крутить как хочешь... Впринципе можно создать массив вершин и рендерить вручную... там и цвет укажешь и все, что хочешь..... :wink:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 26.02.2005 (Сб) 9:39

Структура D3DVERTEX не запрещает использовать Diffuse. Если его нет в исходном меше, его легко добавить, сконвертировав формат самого меша: D3DXBaseMesh.CloneMeshFVF.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 26.02.2005 (Сб) 12:50

А вот тут вот прошу поподробнее... Это как?
ХЎ

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 26.02.2005 (Сб) 13:54

Vovik писал(а):Впринципе можно создать массив вершин и рендерить вручную... там и цвет укажешь и все, что хочешь..... :wink:


а КАК разобрать MESH на массив вершин :roll:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 26.02.2005 (Сб) 19:01

Вот цветной меш с разборкой на массив вертексов:

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 27.02.2005 (Вс) 0:01

Mikle
Спасибо
Но как сделать так чтобы цвет соответствовал цвету материала
например мой меш состоит из 3 частей с разными цветами
(танк из сдк : пушка, гусеницы и башня разных цветов)

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 27.02.2005 (Вс) 11:27

D3DXBaseMesh.GetAttributeTable - определяешь индексбуферы для каждого сабсета, по индексам находишь вертексы и окрашиваешь.
Но тут есть подводный камень - индексы из разных сабсетов могут указывать на один и тот же вертекс. Поэтому меши, состоящие из нескольких сабсетов лучше делить на соответствующее кол-во простых мешей.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 27.02.2005 (Вс) 16:38

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


:( Я горбатился уже не помню сколько, чтобы разбить моедь х по собсетам, тут даже тема "опять эти х файлы" на несколько листов, а все оказалось так просто??? Где ты раньше был, а, Mikle???
ХЎ

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 27.02.2005 (Вс) 17:49

как с помощью этого D3DXBaseMesh.GetAttributeTable
определить индексы для каждого сабсета :oops:
или как разбить меш на простые???

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 27.02.2005 (Вс) 19:58

d3drm
а все оказалось так просто??? Где ты раньше был, а, Mikle???

Я не понял в той теме твой вопрос, что нужны всего лишь сабсеты. :wink:
Bonesnapper
Ну сам-то хоть чуть-чуть ковырни SDK, там же все это есть.

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 27.02.2005 (Вс) 22:48

D3DXBaseMesh.GetAttributeTable
Выдает все нули и вообще где здесь индексы сабсетов
Type D3DXATTRIBUTERANGE
AttribId As Long
FaceCount As Long
FaceStart As Long
VertexCount As Long
VertexStart As Long
End Type

скажи плиз как получить данные об отдельном сабсете
и как узнать из скольких сабсетов состоит меш :cry: :cry:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 28.02.2005 (Пн) 17:27

Действительно что-то не работает, бум разбираться... :cry:

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Re: Цветной MESH

Сообщение Yurich » 28.02.2005 (Пн) 23:29

Bonesnapper писал(а):Как нарисовать MESH...

Душила жаба гадюку... Задушила, но оставила жить!
Убрал поддержку формата mDX и костей.
Текстуры по умолчанию в папке \Bitmaps
Последний раз редактировалось Yurich 03.03.2005 (Чт) 21:54, всего редактировалось 1 раз.
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Re: Цветной MESH

Сообщение Vovik » 28.02.2005 (Пн) 23:34

Yurich писал(а):
Bonesnapper писал(а):Как нарисовать MESH...

Душила жаба гадюку... Задушила, но оставила жить!
Убрал поддержку формата mDX и костей.
Текстуры по умолчанию в папке \Bitmaps
Вот, кто все знал, но молчал до последнего. :D :wink:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 01.03.2005 (Вт) 11:20

Вот, кто все знал, но молчал до последнего.

Yurich над этим долго трудился, поэтому и "душила жаба" :wink:

А я уже начал делать "обходной маневр":

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 03.03.2005 (Чт) 22:02

Yurich спасибо
с твоим примером мне не разобраться :oops:
(и незню может это в следствии урезанной версии танк рисуется у тебя не правильно)
Mikle
спасибо но это не совсем то что мне нужно
мне нужно менять цвет отдельного сабсета
но я ни как не могу до него добраться
как мне узнать какие вертексы соответствуют тому или иному сабсету

[/b]

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 04.03.2005 (Пт) 11:11

В примере ты двигаешь скролы и ищешь начало и конец сабсетов визуально, сложно, но действенно. Кнопка SetColor окрашивает только видимый фрагмент.
Вообще это только пример, программу ты можешь сам продолжить, например сделать кнопки Lock\UnLock - блокировка от закраски, кнопку SaveSubset - запомнить текущий фрагмент и т. д.

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 04.03.2005 (Пт) 15:36

Bonesnapper писал(а):Yurich спасибо
с твоим примером мне не разобраться :oops:
(и незню может это в следствии урезанной версии танк рисуется у тебя не правильно)

1. Все САМОЕ ВАЖНОЕ находится в модуле DXMESH, причем он хорошо комментирован
2. Неправильно геометрически?
3. Софтовый виевер его правильно рисует?
4. Пришли свой танк (без текстур) сюда либо мне aula@ghost.dn.ua
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 04.03.2005 (Пт) 17:52

Mikle
наверника это можно узнать програмно
Yurich
отправил (он без текстур сам по себе)
все сабсеты рисуются в куче ,может по тому что он такой маленький что его сразу и не видно
(надо приблизить)
Софтовый виевер его рисует правильно
Все САМОЕ ВАЖНОЕ находится в модуле DXMESH

скажи сразу он как то связан с другими классами
чтобы сразу знать стоит ли рыться в других

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 04.03.2005 (Пт) 19:49

Bonesnapper писал(а):отправил (он без текстур сам по себе)

Ok! Еще в почту не успел заглянуть. Модель поковыряю.
Bonesnapper писал(а):скажи сразу он как то связан с другими классами
чтобы сразу знать стоит ли рыться в других

Это сложно объяснить даже с помощью статьи. В кратце
иерархия классов:
1. Любая .Х модель (класс DXModel) содержит 1 или более фреймов DXFrame.
2. Каждый DXFrame содержит сабсет DXMesh или 1 и более DXFrame более низкого уровня.
3. В любом случае DXFrame заканчивается сабсетом DXMesh.
4. DXMesh разделён на полигоны и вертексы.
Добавляют сложность в моём коде поддержка анимации и адаптация под DLL.
Мои модели все работают?
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 04.03.2005 (Пт) 21:24

Твоя модель не виновата, хоть и чересчур маленькая - это ошибка в коде связанная с TrasformMatrics. Дело хуже, пока копался где-то угробил код. Теперь ваще нифига не работает. Ну я попал!!!
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 04.03.2005 (Пт) 22:28

Bonesnapper
Благодаря тебе нашел ошибку, касающуюся сортировки материалов!!! Сенкс!!!
В общем эта ф-я (модуль DXMesh) бесполезна. Придумана, чтобы экономить память. Измени этот кусочек и перекомпили. А можешь ваще выбросить. Теперь все детали своим цветом.

Private Function CompareMaterials(M1 As D3DMATERIAL8, M2 As D3DMATERIAL8) As Boolean
If M1.power <> M2.power Then Exit Function
If M1.emissive.r <> M2.emissive.r Then Exit Function
If M1.emissive.g <> M2.emissive.g Then Exit Function
If M1.emissive.b <> M2.emissive.b Then Exit Function
If M1.emissive.a <> M2.emissive.a Then Exit Function
If M1.Ambient.r <> M2.Ambient.r Then Exit Function
If M1.Ambient.g <> M2.Ambient.g Then Exit Function
If M1.Ambient.b <> M2.Ambient.b Then Exit Function
If M1.Ambient.a <> M2.Ambient.a Then Exit Function
If M1.diffuse.r <> M2.diffuse.r Then Exit Function
If M1.diffuse.g <> M2.diffuse.g Then Exit Function
If M1.diffuse.b <> M2.diffuse.b Then Exit Function
If M1.diffuse.a <> M2.diffuse.a Then Exit Function
If M1.specular.r <> M2.specular.r Then Exit Function
If M1.specular.g <> M2.specular.g Then Exit Function
If M1.specular.b <> M2.specular.b Then Exit Function
If M1.specular.a <> M2.specular.a Then Exit Function
CompareMaterials = True
End Function

Насчет геометрии твоего танка пока ничего.
Собно ты сам его или взял готовый. Если сам, то расскажи чем.
Взамен почти аналогичный MyTank!
У вас нет доступа для просмотра вложений в этом сообщении.
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 04.03.2005 (Пт) 23:39

Танк из СДК
Вообщето он у меня в проге нормально рисуется (у тебя только все в куче)

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 05.03.2005 (Сб) 16:05

Bonesnapper писал(а):Танк из СДК
Вообщето он у меня в проге нормально рисуется (у тебя только все в куче)

Танк в СДК? Для меня новость, может просто не заметил.
Но теперь точно скажу, эти мужики как-то замутили TransformMatrix
Как - для меня осталось тайной. Если обращал внимание - в Skmech.x нулевой кадр анимации не виден - та же галиматья. Танк у тебя рисутся нормально потому, что грузится целиком. Но в данном случае ты никак не сможешь управлять цветами сабсетов - модель цельная. У меня грузится отдельными сабсетами - тут можно крутить и цветами и текстурами как захочется.
Мой танк на моем примере посмотрел?
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 12.03.2005 (Сб) 16:39

Yurich
спасибо конечно но мне всетаки твой пример не осилить
слишкои много ссылок на разные классы (я уже пытался освоить пример из сдк с двигателем ) :oops:

Может у кого есть пример по проще мне бы только научиться
получать доступ к отдельным сабсетам пример Mikle меня устраивает вот только как узнать какой вертех принадлежит какому савсету програмно :roll:

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 14.03.2005 (Пн) 20:49

Bonesnapper писал(а):Yurich
спасибо конечно но мне всетаки твой пример не осилить
слишкои много ссылок на разные классы (я уже пытался освоить пример из сдк с двигателем ) :oops:
Может у кого есть пример по проще мне бы только научиться
получать доступ к отдельным сабсетам пример Mikle меня устраивает вот только как узнать какой вертех принадлежит какому савсету програмно :roll:

Bonesnapper
х-файл (твой и мой примеры танков записаны в текстовом формате) легко просмотреть. Открываешь, видишь. Несложно понять, что число пробелов перед строкой символов указывает на уровень вложенности родительских/дочерних данных. В коде три класса. Model->Frame->Mesh. Циклится только один - Frame. В любом случае выходишь на Mesh. В нем и хранятся все те данные, что тебе нужны. Воспользуйся брекпойнтами. Ниже код, упрощенный до крайности, работает из проекта, без DLL. Разверни вторую панель инструментов. Кликни по модели. Увидишь имя меша - это твой ключик. Дальше сам.
У вас нет доступа для просмотра вложений в этом сообщении.
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 14.03.2005 (Пн) 23:11

Спасибо будем разбираться :wink:

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 23.03.2005 (Ср) 16:35

Вроде немного разобрался
Упростил все до предела
Но вот появилась новая проблема :?
Грузятся только текстовые файлы
Вот что я сделал может кто посмотрит что я пропустил (пример очень маленький)
Зарание спасибо

След.

Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36

    TopList  
cron