Не получается отрисовать quad вершинами.

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

Не получается отрисовать quad вершинами.

Сообщение NOVA 25 сен 2017, 06:11

Задаётся всё вроде правильно, но рисуется как-то странно.


Синтаксис:
Используется csharp
Vertices[0] = Camera.ViewportToWorldPoint(new Vector3(0, 0, Camera.nearClipPlane));
        Vertices[1] = Camera.ViewportToWorldPoint(new Vector3(1, 0, Camera.nearClipPlane));
        Vertices[2] = Camera.ViewportToWorldPoint(new Vector3(0, 1, Camera.nearClipPlane));
        Vertices[3] = Camera.ViewportToWorldPoint(new Vector3(1, 1, Camera.nearClipPlane));

        Mesh.vertices = Vertices;

        Normals[0] = Quad.transform.position-Camera.transform.position;
        Normals[1] = Quad.transform.position - Camera.transform.position;
        Normals[2] = Quad.transform.position - Camera.transform.position;
        Normals[3] = Quad.transform.position - Camera.transform.position;

        Mesh.normals = Normals;
        Mesh.RecalculateBounds();


Вот что выходит при запуске.

Изображение
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Не получается отрисовать quad вершинами.

Сообщение samana 25 сен 2017, 06:39

Насколько я помню, то для создания меша нужно не только назначить вершины и нормали, но и треугольники, а у вас о них вообще ни строчки. Или они у вас уже где-то были заданы и просто не изменяются?

p.s. если нормали для всех вершин одинаковые, то нет смысла вычислять их для каждой вершины, достаточно вычислить для одной и подставить это же значение к другим.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Не получается отрисовать quad вершинами.

Сообщение bojlahg 25 сен 2017, 08:59

вершины не в том порядке должен быть обход против часовой стрелки (CCW). я так понимаю редактируете уже имеющийися QUAD. посмотрите в отладке в каком порядке идут индексы вершин в .triangles
Мои проекты: MahJah Star Factory Cop Car Swash! Spline Editor
Аватара пользователя
bojlahg
UNIверсал
 
Сообщения: 392
Зарегистрирован: 13 авг 2011, 10:57
Откуда: Сатка
Skype: bojlahg
  • Сайт

Re: Не получается отрисовать quad вершинами.

Сообщение NOVA 25 сен 2017, 17:01

Ок. Всем спасибо. Не думал, что треугольники - обязательно. Думал, что как вариант.
В итоге получилось. Использовав треугольники и развёртку.
Так как quad являются дочерними объектами пришлось лепить так.
Синтаксис:
Используется csharp
Vertices[0] = Camera.transform.InverseTransformPoint(Camera.ViewportToWorldPoint(new Vector3(0, 0, Camera.nearClipPlane)));
        Vertices[1] = Camera.transform.InverseTransformPoint(Camera.ViewportToWorldPoint(new Vector3(1, 0, Camera.nearClipPlane)));
        Vertices[2] = Camera.transform.InverseTransformPoint(Camera.ViewportToWorldPoint(new Vector3(0, 1, Camera.nearClipPlane)));
        Vertices[3] = Camera.transform.InverseTransformPoint(Camera.ViewportToWorldPoint(new Vector3(1, 1, Camera.nearClipPlane)));
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia


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

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

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