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

Изменять меш только для одного объекта

СообщениеДобавлено: 13 янв 2018, 02:26
NAGIBATOR228pacan
Как мне изменить меш только для объекта на котором скрипт? Вот я делаю Mesh mesh = GetComponent<MeshFilter>().mesh, потом провожу над ним операции, и что я вижу, меш изменился на всех объектах, как сделать так чтобы меш изменился только для одного объекта?
Вот у меня есть идея которую наверное можно реализовать, но я не знаю как, вот нужный мне объект со скриптом создает копию меша и присваивает фильтру эту копию, и все вроде хорошо для каждого объекта будет копия меша, и вот тогда еще один вопрос как создать копию меша?
И да еще что такое треугольники в 3д моделях, mesh.triangles, и почему это int?

Re: Изменять меш только для одного объекта

СообщениеДобавлено: 13 янв 2018, 17:09
samana
Дело в том, что команда GetComponent<MeshFilter>().mesh уже возвращает копию меша, а вот GetComponent<MeshFilter>().sharedMesh возвращает оригинальный. Поэтому ошибка смены всех мешей у всех объектов явно не в этой команде, ищите где-то в другом месте. Кстати, что же мешает вам показать код?

NAGIBATOR228pacan писал(а):И да еще что такое треугольники в 3д моделях, mesh.triangles, и почему это int?

Меш состоит из точек (вершины). Все вершины просто находятся в массиве.
Треугольник (полигон) можно построить минимум по трём вершинам. Поэтому треугольник - это три int-а, которые означают что этот треугольник создан по вершинам, допустим из 3-ей вершины в массиве, 5-ой и 120-ой. То-есть mesh.triangles единый массив сразу для всех треугольников.
Чтобы проще это осознать, возьмём выдуманный массив mesh.triangles, например:
[5,6,1,3,2,4,7,0,8] - ничего не понятно.. ~x(
но стоит посмотреть под другим углом
[5, 6, 1,___3,2,4,___7,0,8] - сразу становится понятно, что здесь три треугольника, и первый треугольник находится между 5-ой, 6-ой и 1-ой вершиной меша и т.д.

Re: Изменять меш только для одного объекта

СообщениеДобавлено: 13 янв 2018, 23:11
NAGIBATOR228pacan
Спасибо, я просто через инспектор кидал меш, так всё работает!