/ / BoundingSphere Update - c #, 3d, xna, геометрія, обмеження

Оновлення BoundingSphere - c #, 3d, xna, геометрія, обмеження

Привіт Я пишу маленький RPG про Мурашок у XNA 4.0. Я зробив клас LoadModel для завантаження моделі fbx та створення обмежуючих сфер. У мене є одна загальна сфера обмеження в моделі, створеній об'єднанням сітки моделі. Тепер я створив модель з додатковою сферою, яка представляє мою обмежувальну сферу в грі. Я просто перевіряю, чи є ім'я Mesh "BoundingSphere", і коли це "я додаю mesh.BoundingSphere до мого масиву bs. Тепер я не знаю, як оновити ці Bs ... Мій спробу коду:

 private void buildBoundingSphere()
{

BoundingSphere sphere = new BoundingSphere(Vector3.Zero, 0);
List<BoundingSphere> spheres = new List<BoundingSphere>();
foreach (ModelMesh mesh in Model.Meshes)
{
if (mesh.Name.Contains("BoundingSphere") )
{
BoundingSphere transformed = mesh.BoundingSphere.Transform(modelTransforms[mesh.ParentBone.Index])
spheres.Add(transformed);
sphere = BoundingSphere.CreateMerged(sphere, transformed);

}
}


this.boundingSphere = sphere;
this.spheres = spheres.ToArray();
}

Тепер масив BoundingSphere get / set:

public BoundingSphere[] spheres
{

get
{
// No need for rotation, as this is a sphere
List<BoundingSphere> spheres = new List<BoundingSphere>();
foreach (ModelMesh mesh in Model.Meshes)
{
Matrix worldTransform = Matrix.CreateScale(Scale)* Matrix.CreateTranslation(Position);

if (mesh.Name.Contains("BoundingSphere")) {

BoundingSphere transformed = mesh.BoundingSphere.Transform(worldTransform);
spheres.Add(transformed);
}
}

return spheres.ToArray();
}
set{}
}

У мене є 2 сфери в моделі, і обидві вони знаходяться в одному місці. Дякую за будь-яку підказку

Відповіді:

0 для відповіді № 1

Для однієї речі ваш сетер порожній. Якщо ви збираєтеся автоматично створити сетер, використовуйте set; замість set{}. Так здається, все, що ви робите в buildBoundingSphere() втрачено. Перевірте це спочатку.

Ще одна незначна проблема - це ваша обмежувальна сфераакумулятор починається як точка у витоку. Це передбачає, що походження буде знаходитися всередині остаточної сфери, що взагалі не відповідає дійсності. Дійсно, вам слід якось генерувати початкову сферу лише після того, як ви знаєте першу сферу.

Я не можу розповісти нічого більше з цього фрагмента. Якщо ви збираєтеся перетворити всі сфери в геттері, чи це струмове перетворення об'єкта? Шкала та положення не здаються залежними від сітки, яка перетворює сферу, щоб побудова матриці worldTransform могла бути переміщена за межі циклу.