Я хочу найти 2D ограничивающую рамку (BB) видимой части Game-объекта в Unity3D. **
Благодаря тому, что у меня нет репутации, я не могу публиковать изображения, поэтому вот ссылки на Imgur:
Начальная точка: Изображение
Отображение начальной камеры сцены.Например, я хочу получить BB колес проезжающей машины.
Цель: Изображение
Показ довольно маленького BB, который я хочу получить эффективным способом.Используемый метод очень дорог, и я хочу избежать этого.Это работает на сегментированной версии входного изображения, похожего на это: Изображение .
Текущий подход: Изображение
Этоиспользует границы всех GameObjects (GO), помеченных как колеса, и вызывает функцию, подобную этой:
Rect GetBoundingBox(GameObject go, Camera camera, float margin = 0f)
{
Rect rect = new Rect(-1f, -1f, -1f, -1f);
Vector3[] v; // Vertices
// Object is behind camera
if (camera.WorldToScreenPoint(go.GetComponentInChildren<Renderer>().bounds.center).z < 0)
return rect;
// get first mesh filter
v = go.GetComponentInChildren<MeshFilter>().mesh.vertices;
// maybe the game object hast no mesh yet... and is empty
if (v.Length < 1 || v == null)
return rect;
for (int i = 0; i < v.Length; i++)
{
//World space
v[i] = go.transform.TransformPoint(v[i]);
//GUI space
v[i] = camera.WorldToScreenPoint(v[i]);
v[i].y = Screen.height - v[i].y;
}
Vector3 min = v[0];
Vector3 max = v[0];
for (int i = 1; i < v.Length; i++)
{
min = Vector3.Min(min, v[i]);
max = Vector3.Max(max, v[i]);
}
//Construct a rect of the min and max positions and apply some margin
rect = Rect.MinMaxRect(min.x, min.y, max.x, max.y);
// apply optional margin
rect.xMin -= margin;
rect.xMax += margin;
rect.yMin -= margin;
rect.yMax += margin;
return rect;
}
Появляются две проблемы.
- Получение всех BB, даже если GOкамера не видна.
- Даже если она видна, границы так же велики, как и сам GO, а не как видимая часть.
Я оченьрад каждому намеку в правильном направлении !!
Для заинтересованных людей задание - разработка приложения для генерации / симуляции маркированных обучающих данных для проекта глубокого обучения.