Day 2 - Trouble shooting the Blender import a bit and learning about making a mesh, materials and attaching them, vertex colors:
https://www.whynotestflight.com/excuses/hello-usd-part-2-type-the-rainbow/
Day 2 - Trouble shooting the Blender import a bit and learning about making a mesh, materials and attaching them, vertex colors:
https://www.whynotestflight.com/excuses/hello-usd-part-2-type-the-rainbow/
Day 3: Reality Composer is my USD WYSIWIG
https://www.whynotestflight.com/excuses/hello-usd-part-3-reality-composer-is-my-usd-wysiwig/
No python libs for this, just using the C++ tools in the Pixar repo.
This is using RealityComposer, NOT RealityComposerPro... yet.
Day 4: Build Wrangling
Even though I'm hand coding, I really want to be able to use some of the python tools to learn what to do.
This turned out to be kind of a drag compared to getting just the C++ compiled.
I now have 2.5 stable versions of the tools running without the usdview, including the Apple USD Tools. I've seen `usdview` work in one of the builds, but I'm not confident its stable.
https://www.whynotestflight.com/excuses/hello-usd-part-4-python-setup/
Day 5 and the last before the US holiday.
And it's GREAT news. Got usdview working thanks to the folks on the official USD github and that slack @mikelyndon and other's mentioned to me.
Fireworks indeed!!!
Pro tip... on macOS 13.4 use Python 3.9
https://www.whynotestflight.com/excuses/hello-usd-part-5-python-setup-pt-2-what-really-works/
Also filed a feedback on USDZ Tools: FB12499226
A week later... Day 6 of learning the USD file format ended up being a bit of a rehash of Day one, but using a Swift script instead of a Python script. Having the validation tools installed and ready also helped! (Still no beta software required)
https://www.whynotestflight.com/excuses/hello-usd-part-6-same-as-part-1...-but-swift/
#SwiftLang #Swift #OpenUSD #visionOSDev #visonOS #macOS #Scripting
Part 7: Getting to (non-beta) ARKit compliance for my scripted usda outputs is going to be uglier than I had hoped since usdc files are required.
Figured that out by coaxing the Apple provided usdARKitChecker to pass through a little more info from usdchecker util, and then smooshed the files together using usdcat. Unclear on how to do this all in Swift down the line, but works for now!
https://www.whynotestflight.com/excuses/hello-usd-part-7-where-my-error-messages-at/
#shellScript #openUSD #python #macos #visionOs #ARKit #USDZTools
Part 8: So I did A LOT yesterday, but worked too late on it to really write it up. So today all that gets written up is switching my Swift effort over to a Package with dual-targets (library and executable CLI) using ArgumentParser. It requires more setup than Part 6, Future Me will be relieved to have `--help` when she comes back to her script and does't remember what she did.
image from `swift run sketchpad -sc 4`
#ArgumentParser #SwiftLang #OpenUSD
https://www.whynotestflight.com/excuses/hello-usd-part-8-multiball-moves-to-a-package/
Part 9: Okay, champion of the delaying tactic that I am… In order to understand USD I _have_ to make a Domain Specific Language for it? Riiight?? I used the attached code to make the attached image. The files it makes are still a bit of a puddle... but they do render.
https://www.whynotestflight.com/excuses/hello-usd-part-9-parlez-vous-multiball-dsl-starts-here/
#SwiftLang #Swift #GenerativeArt #CreativeCoding #OpenUSD #ResultBuilder #3D #DomainSpecificLanguage
Part 10: Turns out yesterday was a Reading Day. I have the libraries up and running, but it’s time to truly get the picture as to why USD is even a thing, and what made Apple choose it. A lot of the existing literature is for VFX folks, which I am not, so in addition to my Top Pick references there’s some added color for programmers.
https://www.whynotestflight.com/excuses/hello-usd-part-10-reading-day/
If you watch nothing else (39 min): https://www.nvidia.com/en-us/on-demand/session/gtcspring23-s52054/
Part 11: Wrote a Domain Specific Language... to write Domain Specific Languages! ha! An enum based tree and a Result Builder allowed me to write the attached code to produce the attached output.
playground ready code: https://gist.github.com/carlynorama/088fd2bb77cb9d4fabb0c55e50f780b5
process getting there: https://www.whynotestflight.com/excuses/hello-usd-part-11-gotta-make-it-easier-to-write-file-builders/
#SwiftLang, #DSL, #OpenUSD, #ResultBuilder, #Swift, #Enum, #DataStructures
Part 12: Applying Part 11 to the actual FileBuilder’s will make making adding features to my 3D model builder so much easier.
Case and point the `sphereBuilder` func from the X3D file is so much prettier now, and I can make my openUSD files use the expanded bracket style to their hearts content without having to manage the `\n\t\t` mess myself.
https://www.whynotestflight.com/excuses/hello-usd-part-12-lets-make-these-filebuilders-cleaner/
“The best time to build a test was before the first commit. The next best time is now.” – Proverbious the Commitor, probably
https://www.whynotestflight.com/excuses/hello-usd-part-13-test-test-test/
Part 14: Confirming everything runs on Linux with a GitHub Action and VM.
https://www.whynotestflight.com/excuses/hello-usd-part-14-now-to-get-github-to-run-the-tests/
Part 15: Now, before I forget everything… Can a GitHub Action build and then cache OpenUSD? Yes, Virginia, it can.
EDIT: THE LINK!!! https://www.whynotestflight.com/excuses/hello-usd-part-15-can-a-github-action-cache-a-openusd-build/
Part 16: Duct-tape, string and pieces of gum all the way down, but I can make Swift, via Process(), run anything from a OpenUSD build I want!! usdcat, usdchecker, python scripts that import pxr... THE WORKS! **(MacOS & Linux only)
Part 17: In case anyone needs the data point, building OpenUSD on a Linux VM with only one processor allocated to it takes ~7 hours... BUT it did make it, and the code I thought would work on Linux is truly code I know works on Linux now:
Part 18: It's not all refactoring and compiling after all! Made a sphere… out of Spheres!!!
https://www.whynotestflight.com/excuses/hello-usd-part-18-i-can-make-a-sphere-out-of-spheres/
#SwiftLang #Swift #OpenUSD #x3d #GenerativeArt #CreativeCoding #sphere #fibonacci
Part 19: Lat/Long layout was feeling left out. Had to go back and get it.
#SwiftLang #Swift #OpenUSD #x3d #GenerativeArt #CreativeCoding #sphere
Part 20: I do like the quaint charm of a usd in a QuickLook window, but wow, the png's from usdrecord are dreamy. Not a stray pixel anywhere. And the highlight! So pretty.
For those who are interested - it uses stb, not libpng, to get a large number of image formats for very little code debt.
https://www.whynotestflight.com/excuses/hello-usd-part-20-hello-usdrecord/
Part 21: Inching forward on a refactor of the 3DCanvas so my usda file generator can do something other than Spheres! I'm not sure it’s the answer, but I did make a proof-of-concept SwiftUI/View style version. Modeled on work by @objcio (Thank you!)
TL;DR: https://gist.github.com/carlynorama/3e6765d4a87aaaf3fe2f69abb14764ca
Part 22: The transformation from Canvas -> Layer using a protocol based result builder is complete and now I can... drum roll please… still run multiball. But now I know about usdrecord so it’s prettier!
https://www.whynotestflight.com/excuses/hello-usd-part-22-the-control-flow-is-a-lie./