forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Наложение текстуры по известным 3D координатам (http://forum.boolean.name/showthread.php?t=15753)

DStalk 02.11.2011 20:05

Наложение текстуры по известным 3D координатам
 
На меш произвольной формы надо наложить текстуру, известна точка наложения в 3D координатах. Как ее наложить или как передвинуть уже наложенную текстуру к нужной точке?
Уже час ищу - ни в примерах ни на форуме похожего не нашел:(

pax 02.11.2011 23:00

Ответ: Наложение текстуры по известным 3D координатам
 
ну так uv посчитать... нет?

DStalk 02.11.2011 23:19

Ответ: Наложение текстуры по известным 3D координатам
 
а вот в том и вопрос, как их посчитать из x,y,z?

pax 02.11.2011 23:30

Ответ: Наложение текстуры по известным 3D координатам
 
А как текстуру надо наложить? Какой метод?

DStalk 02.11.2011 23:32

Ответ: Наложение текстуры по известным 3D координатам
 
Да без разницы, просто текстуру положить, или подвинуть уже наложенную.

dsd 03.11.2011 00:26

Ответ: Наложение текстуры по известным 3D координатам
 
Если на произвольный то из сферической системы координат, наверно.

Например узнаем координаты точки (x,y,z). Еще есть внутри меша произвольной формы точка, для удобства можно вообразить, что эта точка совпадает с началом системы координат.
Далее приводим вектор (x,y,z) к длине 1. acos(x) даст один угол, acos(y) даст второй. 0 в текстурных координатах равен нулю, 360 1. Профит.
Перед тем как acos(x) находить надо наверно x/y сделать, не знаю почему, но надо, наверно. Или не надо, хз я забыл зачем мне это надо было когда я вектор по двум углам прицеливал.

Да, вот еще, если асосинус выдает ответ в радинанах, то 0 - 0, а 6,28 -1.

ABTOMAT 03.11.2011 13:56

Ответ: Наложение текстуры по известным 3D координатам
 
Рисунок в студию!

RegIon 03.11.2011 15:07

Ответ: Наложение текстуры по известным 3D координатам
 
Цитата:

Если на произвольный то из сферической системы координат, наверно.

Например узнаем координаты точки (x,y,z). Еще есть внутри меша произвольной формы точка, для удобства можно вообразить, что эта точка совпадает с началом системы координат.
Далее приводим вектор (x,y,z) к длине 1. acos(x) даст один угол, acos(y) даст второй. 0 в текстурных координатах равен нулю, 360 1. Профит.
Перед тем как acos(x) находить надо наверно x/y сделать, не знаю почему, но надо, наверно. Или не надо, хз я забыл зачем мне это надо было когда я вектор по двум углам прицеливал.

Да, вот еще, если асосинус выдает ответ в радинанах, то 0 - 0, а 6,28 -1.
это так-же как привести проэкцию 3д к 2д,только начало отсчёта переменное

DStalk 03.11.2011 15:08

Ответ: Наложение текстуры по известным 3D координатам
 
Получается что-то вроде этого:
Код:

ax#=VectorYaw# (nx#,ny#,nz#)/180
az#=VectorPitch# (nx#,ny#,nz#)/180
PositionTexture tex,ax#,az#

nx#,ny# и nz# - нужная точка относительно центра объекта.
Но корректно работает только с половиной объекта (полусфера например).

Есть мысль порезать объект на две части с двумя отдельными текстурами или один объект с двумя текстурами по разным сторонам. Кстати например у верха и низа сферы текстура сильно искажается, поэтому лучше использовать две текстуры.


Часовой пояс GMT +4, время: 18:51.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot