ondemand_video   animation
Reviewed: 2021-05-28

Virtual Lego Block

The concept of a block is to be a virtual lego block - with a specified size such as 2x4 or 1x8, etc. Scenes and animation are built from blocks and frames.

Block Children

Blocks have Block Children

Block Children have Frames

Blocks must be created before creating Block Children

Block Children must be created before creating Frames

Blocks are containers holding members in the form of meshes, shapes and other blocks. Blocks are rendered as a box mesh containing all of the child elements. The isVisible of the box is set to false, leaving the child elements visible, but not the block wrapper. Scaling, position and rotation are fully animatable features of a block - not color, visibility though. While materials can be applied to an entire block, animating the materials is not possible. The block root contains frames, when it's a child you can choose either to these frames, or override (default) them with new ones. In many ways a block is similar to a DIV element in HTML. Blocks can be used to carry data in the field genericBlockData and marked for special purposes using the blockFlag field.
blockchild - [parent] relates to title of parent block, parent must exist
  [materialname] = 'inherit' sets (inheritMaterial) = true
  [childtype](childType) - shape, mesh, camera, light, block
  [childname](childName) - title/name of Linked Asset - linked asset can be created later
More on Frames

Macro Blocks

Scene Blocks

Blocks contain a number of features that only apply when they are the root block in a project. When a block is used as a root block it will generate a default camera and light - which can be specified. Audio, video and animation length are some of the scene level settings a block can contain.
More on Scene Blocks More on Cameras More on Lights

Diagram Blocks

These are to support flow charting and diagramming pursuits.
More on Diagram Blocks

Display Blocks

These support product positioning and picking.
More on Display Blocks

Special Purpose Fields

Display Support

(block::blockFlag) = "scene" - root block for the generated scene and assets/links
(block::blockFlag) = "basket" - selected item basket block
(block::blockFlag) = "displaypositions" - preset list of positions for items; genericblockdata = "x1||y1||z1||rx1||ry1||rz1||x2||y2..."
(block::blockFlag) = "displayfieldedits" - override fields in the layout/scene template; genericblockdata = "displaytitle||$template|| $assetName||$assetType|| $fieldname1:$fieldtype1|| $fieldname2:$fieldtype2..."
  $template - layout/product/asset; $assetName - [name]; $assetType - [asset]; $fieldtype - [csv column name]; $fieldtype - display type (image,num)
(block::blockFlag) = "displayblock" - tags block for matching to sku/itemid based items
(block::supportvr) = "1" - enables webXR support for headsets - buggy browsers - works on Quest 2 for sure

asset = block

row for a block asset
basic fields - [materialname], [height], [width], [depth]
[blockcode] (blockCode) - lookup field (legacy field, blockFlag should be used now)
[blockflag] (blockFlag) - field flagging block as special case
[genericblockdata] (genericblockdata) - import data (i.e. hashed position list)

Other Macro Blocks


a row for texture and shape (plane) assets showing fitted/sized 2D text
  [width, height, depth] - determine size
  [texturetext, texturetext2] - line 1 and 2 of text
  [textfontfamily, textfontcolor, textfontsize, textfontweight] - html/css font fields
  [texturetextrendersize] - 512 by default - the width of the container the text is rendered in

Import Notes

document csv import object overwrite by name/title - todo on block - when overwriting a block also delete the block children and frames which are orphaned should be low usage - so orphans should be of min concern, and they should be very small in size