Можно ли определить размер 3d модели / сборного дома в единстве? - PullRequest
0 голосов
/ 27 апреля 2019

Есть ли способ определить размер 3d модели в единстве?Как высота = 1, ширина = 3, глубина = 3?

Я хочу, чтобы модель занимала определенное место в сцене единства, независимо от того, насколько большим или маленьким я делаю fbx в Blender.Поэтому я не могу использовать масштаб, так как изменение размера модели в Blender нарушит это масштабирование.

Мне нужно, чтобы это был квадрат шириной 3, длиной 3 и высотой 1, независимо от размера модели, экспортируемой из Blender.Возможно ли это?

Тот же вопрос, но с другой стороны - как установить размер модели в единицу?Есть только настройка масштаба, но не настройка размера.Это выглядит странно.

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

1 Ответ

1 голос
/ 27 апреля 2019

Вы можете использовать Mesh.bounds , чтобы получить размер 3D-модели без применения масштабирования.

Затем вы пересчитываете шкалу в соответствии с вашими потребностями, например:

// The desired scales
// x = width
// y = height
// z = depth
var targetScale = new Vector3(3, 1, 3);

var meshFilter = GetComponent<MeshFilter>();
var mesh = meshFilter.mesh;

// This would be equal to the 3D bounds if scale was 1,1,1
var meshBounds = mesh.bounds.size;

// This would make the model have world scale 1,1,1
var invertMeshBounds = new Vector3(1/meshBounds.x, 1/meshBounds.y, 1/meshBounds.z);

// Use this if you want exactly the scale 3,1,3 but maybe stretching the fbx
var finalScale = Vector3.Scale(invertMeshBounds, targetScale);

Как я понимаю, вы хотите сохранить правильные относительные масштабы 3D-модели, но сделать так, чтобы она вписывалась в определенную targetScale, чтобы я использовал наименьшее из 3 значений в качестве коэффициента масштабирования

var minFactor = Mathf.Min(finalScale.x, finalScale.y);
minFactor = Mathf.Min(minFactor, finalScale.z);
transform.localScale = Vector3.one * minFactor;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...