EKB - Scale Model Edify Import Review

Assessing the import functionality of Edify, specifically with respect to its preservation of object scale upon import.

A collection of primitives were created using Blender 3.1.2 using a meter unit scale and moved to a specific location within the scene as follows:

  1. 2x2 Cube (default) @ Px,y,z(0,0,0)

  2. Cone @ Px,y,z(-2,0,0)

  3. Sphere @ Px,y,z(0,0,2)

  4. Torus @ Px,y,z(0,0,2)

  5. Suzanne @ Px,y,z(0,0,4)

  6. Cylinder @ Px,y,z(2,0,0)

  7. Polysphere @ Px,y,z(0,2,0)

The entire assembly was exported using Blender’s gLTF exporter and the ‘+YUp’ option selected. This option is particularly important as Unity’s coordinate system uses Y as the ‘up’ axis.

The individual primitive elements were also exported individuall in their relative position within the scene. No additioanl settings are required to be configured to export the individual items from their respective positions, functioanlity is standard behavior.

A new lesson was created. The complete model assembly file and individual compoenents were added to the new lesson via the import option in the main screen prior to entering the lesson. The environment was changed to the dark environment. Using the Unity editor it was confirmed that the origin of the environment (0,0,0) coordinate is at the centre of the environemnt (the exact location the user spawns in).

Using the ‘Add’ functionality on the object panel, each of the model files, exported from blender, was imported into the scene.

The individual model files were loaded in in their own coordinate local systems (individual primitives appeared in their location as in the Blender scene). This confirms that model export positions are preserved when importing into Edify (assuming that no export options were toggled to transform models on export).

Finally, the complete assembly file was loaded in (appearing over the top of the individually exported objects in the exact same location) . This confirms that the object scale is preserved when exporting either individual objects or collections of objects.

Using Edify’s built-in stake tool also gives indication of the object scale to the accuracy of the user’s placement.

Further inspection of the Unity editor confirmed that the objects in the scene (cone in this example) are loaded in a scale factor of (1,1,1) (origninal scaling in all axes). Furthermore the objects are loaded into their own group, irispective of the environment (Object scale and position are independant of the environment they are loaded into).

Moorfields import example:

The previous process was repeated using the moorfieldsenvironment. The below image shows the models loaded in at (0,0,0) (which is somewhere at the bottom of the stairs in the Moorefield environment). The environment would need to be shifted, reletive to the Unity worlspace origin if this is not the inted (0,0,0) point of the Moorefields model.

Environment Geometry Positioning

Some environments within Edify do not have their geometry centrered about the world-space origin. The below example (Mars Crater) shows the world space origin (Gizmo located upper middle of the below image) and the crater environmen (Environment geometry located lower middle of the below image) are spaced a significant distance from eachother, thus rendering the ‘Add’ functionality in the object panel practically unusable.

Conclusion

To maintain imported objects' scale and coordinate system within Edify, the ‘Add’ functionality must be used. However, this will have undesireable effects in environments where the geometry origin is unkown or arbitrarily set. Furthermore, to enable workflows such as importing objects in their nomal scale, they must share the same coordinate system as the environment they are loaded into.

This is can be demonstrated clearly in Edify through use of the ‘custom environments' option in the objects panel. In the example illustrated below, the primitive cube was exported to its own environment. This has the effect of aligning the cube’s coordinate system with that of the environment. Consequently, as the cube was exported from the same coordinate reference as the primitive models from blender, when the rest of the exported models are placed using the ‘Add’ functionality, they appear in the exptec opsitions reletive to the environment (the cube in this case).

Cube set as a custom environment (This sets the environment at the worldspace origin)
When the rest of the primitives were loaded into the scene using ‘Add’ they load into the environment in their expected location.