Thinking in Fabric 101

Reinterpreting Art

As the Virtual Reality (VR) community has matured over the past 3 years, it is becoming essential for content producers to generate high-quality mesh renderings for 360-degree animated experiences. One of the most impressive pursuits that I have seen was The Dali Museum's modern interpretation of Archaeological Reminiscence of Millet's Angelus, which was itself a reinterpretation of [Angelus](https://en.wikipedia.org/wiki/The_Angelus_(painting)#/media/File:JEAN-FRANÇOIS_MILLET_-El%C3%81ngelus_(Museo_de_Orsay,1857-1859.%C3%93leo_sobre_lienzo,_55.5_x_66_cm), a painting by Jean-François Millet in 1859.

Archaeological Reminiscence of Millet's Angelus
Archaeological Reminiscence of Millet's Angelus

When I saw this a few months ago, I was enraptured by the storytelling capacities of CG modelling in a substantive way. If you've watched the video, you'll understand why. If not, take a moment to watch it. (Remember to look around by dragging your mouse).

Getting Started

If you're as inspired by these productions as I am, you'll need to get comfortable working with digital content creation (DCC) tools. These tools generally allow you to manipulate objects in a viewport, generating lists and lists of 3-dimensional points and information about surfaces and textures. This data is then pumped into a Rendering Engine, which reads that information about location, texture, surface, and lighting to show you a 3D scene from the perspective of a virtual camera. You can move the camera around to see your scene from all sides to obtain a strong sense of spatial recognition.
Fabric Engine(http://fabricengine.com/) is a DCC platform geared towards artists and developers across a massive spectrum. With a visual programming structure called Canvas, artists can interact with scenes in complex ways by linking nodes. Comfortable and quick, Canvas takes advantage of the memory- and gpu-efficient engine underneath the hood without requiring the user to write a single line of code. Fabric can be integrated with any existing DCC tools that you may already be comfortable with (e.g. Maya, Softimage, MODO).
[insert image of Canvas from my desktop]
If you're not yet comfortable with at least one programming language, check out and set up Canvas using their tutorials, and read through some of the documentation here:

Get Started and Launch Fabric Standalone:
http://docs.fabric-engine.com/FabricEngine/2.1.0/HTML/GettingStartedGuide/index.html#gettingstarted-index
The Canvas User Guide does a better job than I could ever hope to do:
http://docs.fabric-engine.com/FabricEngine/2.1.0/HTML/CanvasUserGuide/index.html#canvasuserguide

Once you've got a handle on the basics from the documentation, start exploring and creating!

Into the KL caverns

Now if you're a code soldier like me, you know that any program is only as good as the language it is built on. Fabric Engine is built on a proprietary language called KL. KL works as a general programming language, similar to JavaScript and C. It is strongly typed, imperative, dynamic language built on an LLVM-compiler backend. KL is the basis for all the nodes in Canvas, as well as any other features or applications implemented on top of Fabric.

Setting up KL reads .kl filetypes, which can be JIT compiled and run in a single command kl foo.kl.

As a starting point for programming in KL, I want to demonstrate how you could use some of the built-in KL types to generate a point-cloud along the surface of a sphere.

Mark Ristich

Currently I'm living and working in Vancouver, Canada. I love learning new things and solving interesting problems. Let me know if you have a puzzle you want to solve?

Vancouver