в Unity3D как преобразовать / сравнить положение вершин в сетке с мировыми координатами

#c# #unity3d #position #mesh #vertices

Вопрос:

В Unity3D я использую quadsmesh для визуализации массивов и больших звездных полей, таких как новые звезды и галактики, с высокой частотой кадров в секунду, используя только один игровой объект с эффектом почти затухания на квадроциклах с использованием шейдеров.

При построении сетки я сохраняю позиции каждой звезды (вершины) и некоторые параметры в массиве и создаю игровые объекты для каждого элемента в указанном диапазоне и хочу уничтожить тех, кто находится далеко, чтобы как можно меньше экземпляров игровых объектов.

Когда сетка и все ее родительские объекты имеют свои позиции преобразования, установленные, как показано ниже, это работает очень хорошо :

положение x:0 y:0 z:0 вращение x:0 y:0 z:0 масштаб x:1 y:1 z:1

Когда я применяю преобразование (поворот положения или масштабирование) к сетчатому объекту или любому родительскому объекту, я теряю синхронизацию между позициями порожденных объектов и позициями отображения звездного поля

Уже пробовал это с ограниченным успехом

 public Vector3 GetVertexWorldPosition(Vector3 vertex, Transform owner)
{
    return owner.localToWorldMatrix.MultiplyPoint3x4(vertex);
}
 

Я могу обойти проблему Vector3Positioppn, используя

 star.position = GetVertexWorldPosition(vertex, starfield.transform)   starfield.tranform.position;
 

Существует ли стандартный метод преобразования положения вершины в сетке (независимо от поворота и масштаба сетки) в положение в мире сцены ?

Комментарии:

1.Преобразовать.Точка преобразования?