forum.boolean.name

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

Черный крыс 10.11.2007 15:04

Декали : проекция текстуры на полигон (?)
 
У меня вопрос по проекции текстуры.....

У меня есть полигон, на который при нажатии мыши надо положить декаль.
пишу следующее:

Код:

TFormPoint(VertexX(surf,vc),VertexY(surf,vc),VertexZ(surf,vc),mesh,cam)
u#=(8+(TFormedX()))/256
v#=(8+(TFormedY()))/256
VertexTexCoords(surf,vc,u,v,0,1)

Но возникает проблемма....если выстрельнуть под острым углом к стене, то декаль растянеца по V или же U координате, в зависимости если стрельба идет сбоку или вверх\вниз. Как от этого избавица? Мне надо чтоб декаль не растягивалась если стрелять под острым углом......

ЗЫ Если можно то еще обьясните пожалуйста смысл функции TFormPoint() - а то читал хэлп, но там она описано весьма скудно.....

Заранее спасибо!

H@NON 10.11.2007 15:57

Re: Декали : проекция текстуры на полигон (?)
 
Возможно здесь нужно находить нормаль к пикнатому полигону, и уже исходя из этого натягивать тексу на него...
Цитата:

ЗЫ Если можно то еще обьясните пожалуйста смысл функции TFormPoint() - а то читал хэлп, но там она описано весьма скудно.....
Ага, потдерживаю.

johnk 10.11.2007 16:50

Re: Декали : проекция текстуры на полигон (?)
 
Ну так искажение текстуры то происходит из-за того что функця TFormPoint, в твоем случае, трансформирует точку в зависимости от положения и поворота камеры, вот и растягивается текстура.

Igorr 10.11.2007 20:06

Re: Декали : проекция текстуры на полигон (?)
 
Функция TFormPoint переводит координаты точки (x,y,z) из координатной системы одного энтити в координатную систему другого энтити. Например:
Код:


Graphics3D 1024,768,32,2
SetBuffer BackBuffer()
Pivot=CreatePivot()
RotateEntity Pivot,0,180,0
TFormPoint 0,0,1,Pivot,0
Print "global Z coordinates of point(0,0,1):"+TFormedZ()
WaitKey()

Пивот повёрнут на 180 градусов - т.е. ось z его координатной системы смотрит обратно. Функция TFormPoint в примере переводит точку 0,0,1 из координатной системы Пивота в глобальную, но т.к. ось z повёрнута обратно то координата Z этой точки в глобальной координатной системе отрицательна.


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

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