Определить поворт триангла в меше [РЕШЕНО]

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Определить поворт триангла в меше [РЕШЕНО]

Сообщение DevilX 16 июл 2012, 09:18

Здравствуйте.

Подскажите пожалуйста, как в меше с помощью рэйкаста определить поворот триангла?

Заранее благодарен.
Последний раз редактировалось DevilX 16 июл 2012, 14:19, всего редактировалось 1 раз.
DevilX
UNец
 
Сообщения: 3
Зарегистрирован: 16 окт 2011, 11:00

Re: Определить поворт триангла в меше

Сообщение Nicloay 16 июл 2012, 10:18

C рейкастами пока не работал, но думаю у тебя должен быть вектор, если есть вектор- нормализуй его и
static function LookRotation (forward : Vector3, upwards : Vector3 = Vector3.up) : Quaternion
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

Re: Определить поворт триангла в меше

Сообщение DevilX 16 июл 2012, 13:13

Что-то не выходит.

С помощью этого кода выполняется определение столкновения рэйкаста с трианглами меша, на выходе 3 точки, можно ли как-то определить поворот триангла по этим 3 точкам?

Синтаксис:
Используется csharp
MeshCollider meshCollider = hit.collider as MeshCollider;
Mesh mesh = meshCollider.sharedMesh;
Vector3[] vertices = mesh.vertices;
int[] triangles = mesh.triangles;
Vector3 p0 = vertices[triangles[hit.triangleIndex * 3 + 0]];
Vector3 p1 = vertices[triangles[hit.triangleIndex * 3 + 1]];    
Vector3 p2 = vertices[triangles[hit.triangleIndex * 3 + 2]];

Transform hitTransform = hit.collider.transform;
p0 = hitTransform.TransformPoint(p0);
p1 = hitTransform.TransformPoint(p1);
p2 = hitTransform.TransformPoint(p2);
DevilX
UNец
 
Сообщения: 3
Зарегистрирован: 16 окт 2011, 11:00

Re: Определить поворт триангла в меше

Сообщение Левш@ 16 июл 2012, 14:02

hit.normal

Синтаксис:
Используется javascript
var hit : RaycastHit;
    if (Physics.Raycast (firePoint.position, fireDir, hit, fireDist))  {
        sparks.transform.position = hit.point;
        sparks.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
    }
 
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Определить поворт триангла в меше

Сообщение DevilX 16 июл 2012, 14:19

Левш@ писал(а):hit.normal

Синтаксис:
Используется javascript
var hit : RaycastHit;
    if (Physics.Raycast (firePoint.position, fireDir, hit, fireDist))  {
        sparks.transform.position = hit.point;
        sparks.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
    }
 

Благодарю! Вы мне очень сильно помогли, оказывается все так просто!
DevilX
UNец
 
Сообщения: 3
Зарегистрирован: 16 окт 2011, 11:00


Вернуться в Почемучка

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

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 19