9 Dec 2020 16:12
Developing a Rhino → Unreal Engine pipeline
One of our goals with implementing Unreal Engine into the Data Arena is to create a pipeline for students of architecture, interior design, product design or any practice involving create creation of digital 3D models. A pipeline into Unreal Engine would theoretically allow anyone to quickly bring in their work into Unreal Engine projects set up to run in the Data Arena and explore their work in 360º stereo with UE's incredibly lighting and material qualities.
A few weeks ago we started looking into the popular modelling software Rhino to figure out how best to export data. After trying a few common formats, we found FBX to play nicely with Unreal Engine and carry over material properties. Here's a simple red box coated with a glossy red "paint" in Rhino.
![rhino_2.jpg](https://dataarena.net/media/images/rhino_2_new.width-1800.jpg)
![](https://dataarena.net/media/images/rhino_2_new.width-1800.jpg)
![rhino_1.jpg](https://dataarena.net/media/images/rhino_1_new.width-1800.jpg)
![](https://dataarena.net/media/images/rhino_1_new.width-1800.jpg)
![rhino_3.jpg](https://dataarena.net/media/images/rhino_3_new.width-1800.jpg)
![](https://dataarena.net/media/images/rhino_3_new.width-1800.jpg)
Export and import
After a simple File → Export option, we imported the exported FBX file into Unreal Engine and left the default settings as they were. UE accurately separated imported the geometry and created a material, no adjustments needed.
Here it is placed in a bit of a "studio" setup with some basic lighting. Note: at this point I didn't really know anything about lighting in Unreal Engine, and I don't think these shadows are even properly baked to a high standard, so this says a lot about how well UE handles materials out-of-the-box.
![ue_contents.png](https://dataarena.net/media/images/ue_contents.width-1800.png)
![](https://dataarena.net/media/images/ue_contents.width-1800.png)
Unreal Engine screenshots
![rhino_ue_1.png](https://dataarena.net/media/images/rhino_ue_1.width-1800.png)
![](https://dataarena.net/media/images/rhino_ue_1.width-1800.png)
![rhino_ue_2.png](https://dataarena.net/media/images/rhino_ue_2.width-1800.png)
![](https://dataarena.net/media/images/rhino_ue_2.width-1800.png)
![rhino_ue_3.png](https://dataarena.net/media/images/rhino_ue_3_biMtcMm.width-1800.png)
![](https://dataarena.net/media/images/rhino_ue_3_biMtcMm.width-1800.png)
![rhino_ue_4.png](https://dataarena.net/media/images/rhino_ue_4.width-1800.png)
![](https://dataarena.net/media/images/rhino_ue_4.width-1800.png)
![rhino_ue_5.png](https://dataarena.net/media/images/rhino_ue_5.width-1800.png)
![](https://dataarena.net/media/images/rhino_ue_5.width-1800.png)
From here...
This first test came out pretty well with minimal issues and was a good first step towards developing some sort of pipeline. From here we wondered if it would be possible to specify a model to view at runtime, especially coming off the back of the previous experiment where we were changing lights through command line arguments.
Long story short we couldn't quite crack it. Unreal Engine doesn't display 3D models like FBX files, it imports and then interprets them into its own asset system of static meshes and materials. For us to be able to specify a model at runtime means we would need access to this importing and asset creation system at runtime which currently isn't possible (at least in 4.25). It might not be the safest path either, as the importing process handles a few options about the creation of materials and search for textures etc that you might not want to just automate at runtime.
As we move towards developing a pipeline, we're keeping in mind that it might look something closer to a template file that we provide to students or researchers working in these spaces, along with some instructions for importing and placement, and then take said file back to view in the Data Arena.