Неполная модель при загрузке с помощью Forge AR / VR Toolkit - PullRequest
0 голосов
/ 04 июня 2019

У меня есть модель IFC, и я использую пример сценария 'test-2legged' в подготовке сцены (http://forgetoolkit.com/#/scenePrepration), чтобы загрузить его в Forge. Затем я загрузил его с помощью набора инструментов AR / VR (ForgeARKit-update-6-2018.1). Однако загруженная модель является неполной (см. Рисунки ниже). В модели нет внешних ссылок.

Обратите также внимание, что я внес небольшую модификацию в test-2legged, так какоригинальный пример не работает напрямую с новым бета-сервером 'https://developer -api-beta.autodesk.io ' (см. другой пост: Forge ARKit: невозможно загрузить модель в Unity ).

Кажется, что для некоторых компонентов в модели это видно, но для некоторых других это не так, одна вещь, которую я заметил, это то, что некоторые компоненты имеют не-Unicode (финский) значение в таких свойствах, как Type/ Введите имя, не уверен, является ли это основной причиной.

Может кто-нибудь помочь проверить, что может быть не так? Я могу загрузить образец модели.

The downloaded model is incomplete, only some components are visible

What it should be like

Спасибозаранее!

1 Ответ

1 голос
/ 10 июня 2019

У всех, кто сталкивался с подобной проблемой, была проблема с тем, как аффинные преобразования из https://developer -api-beta.autodesk.io были проанализированы в Unity.Если вы видите похожие проблемы (сетки в сцене с позициями / поворотами / масштабами, установленными в нули), перейдите к Assets / Forge / CodeBase / InstanceTreeRequest.cs и замените корпус переключателя "AffineMatrix" наследующий код:

case "AffineMatrix":
    Matrix4x4 mat = new Matrix4x4 ();

    var elements = node["mt"]["elements"].AsArray;
    mat.m00 = elements[0].AsFloat;
    mat.m10 = elements[1].AsFloat;
    mat.m20 = elements[2].AsFloat;
    mat.m01 = elements[3].AsFloat;
    mat.m11 = elements[4].AsFloat;
    mat.m21 = elements[5].AsFloat;
    mat.m02 = elements[6].AsFloat;
    mat.m12 = elements[7].AsFloat;
    mat.m22 = elements[8].AsFloat;

    mat.m03 = node["tr"]["x"].AsFloat;
    mat.m13 = node["tr"]["y"].AsFloat;
    mat.m23 = node["tr"]["z"].AsFloat;
    mat.m33 = 1.0f;

    obj.transform.localScale = ScaleFromMatrix (mat);
    obj.transform.rotation = RotationFromMatrix (mat);
    obj.transform.position = TranslationFromMatrix (mat);
    break;
...