Страница 1 из 1

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

СообщениеДобавлено: 25 сен 2017, 06:11
NOVA
Задаётся всё вроде правильно, но рисуется как-то странно.


Синтаксис:
Используется 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();


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

Изображение

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

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

p.s. если нормали для всех вершин одинаковые, то нет смысла вычислять их для каждой вершины, достаточно вычислить для одной и подставить это же значение к другим.

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

СообщениеДобавлено: 25 сен 2017, 08:59
bojlahg
вершины не в том порядке должен быть обход против часовой стрелки (CCW). я так понимаю редактируете уже имеющийися QUAD. посмотрите в отладке в каком порядке идут индексы вершин в .triangles

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

СообщениеДобавлено: 25 сен 2017, 17:01
NOVA
Ок. Всем спасибо. Не думал, что треугольники - обязательно. Думал, что как вариант.
В итоге получилось. Использовав треугольники и развёртку.
Так как 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)));