jasperpotts
New member
I have just spent 2 days fighting to get a Cheetah model to work in AR across a range of iOS devices. I thought I would share what I learnt to help others The main path I was going down was export as GLTF then use Apples "Reality Converter" this worked but the resulting files crashed on some iOS devices. In particular older devices. The final answer is in two parts:
Textures
Along the way I found that using PBR shaders got you much closer results in the exported file. For the properties like roughness or metallic, if I did not have a texture image then I created a set of tiny PNG files for Black, White and Grey and use those rather than the color picker. The color picker colors seemed to be lost in conversion.
Conversion
I started with trying all the Apple converters but they all gave the same results of works on some devices and crashes on others. The file sizes were 65Mb GLTF to 45Mb USDZ. I then found the Google open source converter USD_FROM_GLTF from https://github.com/google/usd_from_gltf. It was only available in source and a right pain to compile. But once I got it working it was amazing, took the 65Mb GLTF and produced a 23Mb USDZ that works on all devices there was some texture quality loss but I think that can be tuned with command line arguments. I was happy with the quality size tradeoff. Also the google converter is maybe 100x faster than Apples. In case it is useful my notes on how to compile are below.
What would be AMAZING! is if Cheetah could build the Google converter in and offer USDZ export, worth a try asking
The same model was used in a Unity app and as USDZ QuickView, the unity app can be seen at
Here is a screenshot of the AR Quickview USDZ
Textures
Along the way I found that using PBR shaders got you much closer results in the exported file. For the properties like roughness or metallic, if I did not have a texture image then I created a set of tiny PNG files for Black, White and Grey and use those rather than the color picker. The color picker colors seemed to be lost in conversion.
Conversion
I started with trying all the Apple converters but they all gave the same results of works on some devices and crashes on others. The file sizes were 65Mb GLTF to 45Mb USDZ. I then found the Google open source converter USD_FROM_GLTF from https://github.com/google/usd_from_gltf. It was only available in source and a right pain to compile. But once I got it working it was amazing, took the 65Mb GLTF and produced a 23Mb USDZ that works on all devices there was some texture quality loss but I think that can be tuned with command line arguments. I was happy with the quality size tradeoff. Also the google converter is maybe 100x faster than Apples. In case it is useful my notes on how to compile are below.
Bash:
brew update
brew install boost
mkdir /opt/local
mkdir /opt/local/USD
mkdir /opt/local/usd_from_gltf
git clone https://github.com/PixarAnimationStudios/USD.git
cd USD
python3 build_scripts/build_usd.py --no-python /opt/local/USD
cd ..
git clone https://github.com/google/usd_from_gltf.git
cd usd_from_gltf
python3 tools/ufginstall/ufginstall.py /opt/local/usd_from_gltf /opt/local/USD --testdata
echo 'export PATH="/opt/local/usd_from_gltf/bin:$PATH"' >> ~/.zshrc
What would be AMAZING! is if Cheetah could build the Google converter in and offer USDZ export, worth a try asking
The same model was used in a Unity app and as USDZ QuickView, the unity app can be seen at
Here is a screenshot of the AR Quickview USDZ