Не получается затекстурить треугольники (помогите новичку)

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

Модератор: Mikle

ВикторZX
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 10.06.2008 (Вт) 13:07
Откуда: Киев

Не получается затекстурить треугольники (помогите новичку)

Сообщение ВикторZX » 19.09.2008 (Пт) 12:47

Уважаемые форумчане, у меня к вам такой вопрос. Собственно когда рисую треугольники с вертексным флагом D3DFVF_XYZ Or D3DFVF_DIFFUSE, то все работает, но как только хочу применить текстуру и устанавливаю флаг D3DFVF_XYZRHW Or D3DFVF_TEX1 - ничего не видно вообще.
Ни как не могу понять, где ошибка, ну все ж правильно.
Чтоб не быть голословным, присоединяю исходник.
Прошу громко не ругаться, ибо DX только осваиваю
У вас нет доступа для просмотра вложений в этом сообщении.
null

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

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение Mikle » 19.09.2008 (Пт) 12:56

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

ВикторZX
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 10.06.2008 (Вт) 13:07
Откуда: Киев

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение ВикторZX » 19.09.2008 (Пт) 20:16

Mikle писал(а): но предполагаю, что не заданы матрицы ...

спасибо, "Mikle, ты как всегда прав. Вообще-то я как раз учусь по твоей книге, так что наверняка у меня будут вопросы, я их буду задавать прям тут, чтоб не плодить темы, ок?
PS отличная книга, я до этого уже много раз пытался учить DX и столько же раз бросал, потому что ничего не понятно было, наконец-то нашел книгу где все расписано доходчиво, как для меня!!!
null

ВикторZX
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 10.06.2008 (Вт) 13:07
Откуда: Киев

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение ВикторZX » 19.09.2008 (Пт) 22:17

Ну вот, как я и говорил...
Наверное я плохой ученик, но теперь моя текстура размазывается
У вас нет доступа для просмотра вложений в этом сообщении.
null

Ktulhu
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 14.07.2007 (Сб) 14:03
Откуда: Киев, Р'льех

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение Ktulhu » 19.09.2008 (Пт) 22:49

в описании Private Type vFormat закоментить строчку RHW As Single
в процедуре Render d3dDevice.DrawPrimitive D3DPT_TRIANGLELIST, 0, 2 поменять последний параметр на 1
ну и с tu/tv вершин поигратся по желанию

ВикторZX
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 10.06.2008 (Вт) 13:07
Откуда: Киев

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение ВикторZX » 19.09.2008 (Пт) 23:24

Ktulhu - ошибка как всегда примитивна, спс что не проигнорировал и не посмеялся. Очень признателен, благодаря вам у меня не отбивается желание учить DX дальше. Я уже много раз брался за это дело и каждый раз неудачно. В такие глубины (ну, для меня это глубины) я еще не заходил.
null

ВикторZX
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 10.06.2008 (Вт) 13:07
Откуда: Киев

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение ВикторZX » 21.09.2008 (Вс) 18:59

уважаемые форумчане, у меня снова непонятка. Теперь я пытаюсь использовать освещение и текстурирование. Получаю просто темную фигуру, я знаю, что ошибка, как это у меня всегда, очень примитивна, но сам ее найти не в состоянии.
Метод отрисовки геометрии (цилиндр) взят из книги Mikle. Нормали расчитываю сам (наверняка неправильно).
И... прошу прощения за свои наивные вопросы...
У вас нет доступа для просмотра вложений в этом сообщении.
null

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение djalex777 » 22.09.2008 (Пн) 10:10

Пример не скачивал, но есть предположение, что освещение не работает так как у тебя не задан материал для объекта. А вобще, неужели сложно почитать десять страниц азов dx в любой книге? Или хотя бы тут, на форуме?

ВикторZX
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 10.06.2008 (Вт) 13:07
Откуда: Киев

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение ВикторZX » 23.09.2008 (Вт) 21:18

все равно спасибо
null

ВикторZX
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 10.06.2008 (Вт) 13:07
Откуда: Киев

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение ВикторZX » 23.09.2008 (Вт) 23:52

Что ж, Mikle, я прочитал твою книгу, благодаря ей я теперь знаю элементарные понятия DX, за что тебе отдельное спасибо. Жаль, что там нет ничего о загрузке мэшэй из .х, я пытался загружать .х (смотрел примеры в других исходниках), и даже успешно, вот только с освещением ничего не получалось - не знаю как расчитать нормали, а без них модель имеет, как известно, черный цвет, то есть ее не видно.
Эх, было бы продолжение этой книги, написанное так же легко, как для меня...
Книга внезапно обрывается на шейдерах...
Но в любом случае спасибо, Mikle, за проделанную работу!!! :D
null

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение djalex777 » 24.09.2008 (Ср) 10:36

Не видно или имеет черный цвет? Если не видно, то скорее всего дело в материале, если черный цвет с включеным освещением, то дело в нормалях или источнике света. А что тебе не понятно с нормалями? Для треугольника расчитываем хотя бы этой функцией (которая сразу же была найдена на этом форуме):
Код: Выделить всё
Public Function NormFromTri(a As D3DVECTOR, b As D3DVECTOR, c As D3DVECTOR) As D3DVECTOR
Dim v1 As D3DVECTOR, v2 As D3DVECTOR
  D3DXVec3Subtract v1, b, a
  D3DXVec3Subtract v2, c, a
  D3DXVec3Cross v1, v1, v2
  D3DXVec3Normalize NormFromTri, v1
End Function

ВикторZX
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 10.06.2008 (Вт) 13:07
Откуда: Киев

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение ВикторZX » 25.09.2008 (Чт) 1:16

нет, в данном случае это не поможет. Вот исходник
У вас нет доступа для просмотра вложений в этом сообщении.
null

StimorolD3DX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 293
Зарегистрирован: 03.04.2007 (Вт) 18:19
Откуда: Kiev city

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение StimorolD3DX » 25.09.2008 (Чт) 10:20

В DXSDK пример же есть, посмотри

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение djalex777 » 25.09.2008 (Чт) 12:20

Посмотрел я исходник... Ты их откуда-то выдираешь не вникая даже в смысл. Одно из того, что бросилось в глаза - два раза очищаешь девайс. Теперь по сути вопроса - у тебя в директории лежит x-файл не содержащий нормалей. Ты его загружаешь:
Код: Выделить всё
...
Set Mesh = d3dx.LoadMeshFromX(App.Path + "\Tiger.x", D3DXMESH_MANAGED, d3dDevice, Nothing, MtrlBuffer, NumMaterials)
...

А дальше тебе нужно поменять FVF этого меша так, что бы в нём присутствовали нормали. Делается это методом CloneMeshFVF, который есть у твоего меша. А далее просто вызываем функцию D3DX ComputeNormals, в качестве параметра передавая ей твой меш. Вот и всё. Пожелания тебе - почитай всё таки основы dx...

ВикторZX
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 10.06.2008 (Вт) 13:07
Откуда: Киев

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение ВикторZX » 25.09.2008 (Чт) 17:11

Помог, как всегда, спасибо.


StimorolD3DX писал(а):В DXSDK пример же есть, посмотри


А где он, этот SDK для VB?
null

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Не получается затекстурить треугольники (помогите новичку)

Сообщение Debugger » 25.09.2008 (Чт) 17:20

Для VB вроде ничего нету. А вот для других языков - http://www.microsoft.ru


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

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

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

    TopList