Расчёт экранных координат

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

Модератор: Mikle

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Расчёт экранных координат

Сообщение Anatron » 25.02.2005 (Пт) 22:30

Как получить готовые экранные координаты, если я знаю положение точки в пространстве?
Конечно, можно самому всё посчитать, но меня греет надежда, что есть какой нить универсальный способ из арсенала самого DX.

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

Сообщение Yurich » 26.02.2005 (Сб) 19:40

D3DXVec3Project

См. Также
D3DXVec3Unproject
D3DXVec3Subtract
http://bbs.vbstreets.ru/viewtopic.php?t=12302
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 26.02.2005 (Сб) 23:08

А в DX7 есть такая функция?

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

Сообщение Yurich » 26.02.2005 (Сб) 23:56

Anatron писал(а):А в DX7 есть такая функция?
Однозначно есть, например
DirectX7.ProjectionMatrix
Только не понятно, к чему потеть над тем, что уже давно не греет?!
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 27.02.2005 (Вс) 22:35

Я скорее всего неточно задал вопрос, или я просто чего-то недопонимаю....
ProjectionMatrix создаёт матрицу проектирования.
А мне надо узнать какие будут координаты у конкретной вершины в экранных пикселях. Мне просто надо сделать подсветку вершин, и для этого мне надо знать, в каком месте на экране будет эта вершина.
Я думаю, что эти коорд-ты можно рассчитать, зная matProject и MatView(matWorld я не использую). Но каким образом, т.е. что на что умножать надо и, вообще, какие делать преобразования, я не знаю.

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 27.02.2005 (Вс) 22:39

Т.е. только matProject можно использовать тогда, когда камера неподвижна.

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

Сообщение d3drm » 27.02.2005 (Вс) 23:54

Почему бы тебе их не "подсвечивать" прямо в 3D?
ХЎ

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 28.02.2005 (Пн) 22:43

Тогда встречный вопрос: Какие предложения, как это сделать? У меня есть несколько мыслей:
1) В DrawPrimitive использовать D3DPT_POINTLIST. Минус - плохая видимость точки - подсвечивается только 1 пиксель. Не подходит.
2) Рисовать меш-сферу. Минус - постоянная подгонка под камеру(размер). Да и просто - очень много считать, будет притормаживать.

Всё. Мысли кончились. В плане производительности лучше использовать мой метод. Высчитываются только экранные координаты, а потом рисуется кружок - и всё.
Неужели до меня никто не задавался таким вопросом?

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

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

Anatron писал(а):Тогда встречный вопрос: Какие предложения, как это сделать? У меня есть несколько мыслей:
1) В DrawPrimitive использовать D3DPT_POINTLIST. Минус - плохая видимость точки - подсвечивается только 1 пиксель. Не подходит.
2) Рисовать меш-сферу. Минус - постоянная подгонка под камеру(размер). Да и просто - очень много считать, будет притормаживать.

Всё. Мысли кончились. В плане производительности лучше использовать мой метод. Высчитываются только экранные координаты, а потом рисуется кружок - и всё.
Неужели до меня никто не задавался таким вопросом?
А кружок чем рисовать будешь интересно? DX, тогда быстрее будет рядом пару пикселей сделать, чем лепить из полигонов... А если АПИ - то вообще моргать будет с DX... :roll:

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

Сообщение d3drm » 01.03.2005 (Вт) 1:03

можно использовать частицу - это спрайт, который всегда повернут к камере передней стороной. Как в первой версии Дума были монстры. 2 полигона, 4 точки - особого напряга нет. тоже самое, чтобы ты в 2Д рисовал на экране.
ХЎ

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

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

А чем не подошел PointSprite? Размер не 1 пиксел, а какой угодно. Недавно здесь уже выкладывался пример.

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 01.03.2005 (Вт) 22:14

Vovik:
Кружок рисуется элементарно - ddsBack.DrawCircle. В этом плане мудрить не собирался.

d3drm:
Про это я тоже думал. Но... надо создавать две грани, рисовать тектстуру... Да и расчётов на порядок увеличивается: либо считать одну точку, либо плюс ещё 4 для полигонов и потом ещё текстурировать.

Mikle:
А что такое PointSprite?...

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

Сообщение Vovik » 01.03.2005 (Вт) 23:24

Anatron писал(а):Vovik:
Кружок рисуется элементарно - ddsBack.DrawCircle. В этом плане мудрить не собирался.
Просто я имел ввиду DirectX8 :roll:

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

Сообщение Mikle » 02.03.2005 (Ср) 16:14

http://bbs.vbstreets.ru/viewtopic.php?t ... c&start=30
Здесь я давал пример PointSprite.

Anatron
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 21.08.2002 (Ср) 20:22
Откуда: Златоуст, Челябинская обл.

Сообщение Anatron » 05.03.2005 (Сб) 22:37

Ладно, ребят, всё равно спасибо. Если напишу таки код, то выложу.


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

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

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

    TopList