14.11.2014 Views

Procedural modelling in Houdini based on Function Representation

Procedural modelling in Houdini based on Function Representation

Procedural modelling in Houdini based on Function Representation

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

4.1 System overview<br />

The core of the <str<strong>on</strong>g>in</str<strong>on</strong>g>termediate layer c<strong>on</strong>sists of a set of custom Houd<str<strong>on</strong>g>in</str<strong>on</strong>g>i nodes (see Figure 4.1).<br />

They all <str<strong>on</strong>g>in</str<strong>on</strong>g>herit from FRep_Node which forms the base for primitives and operati<strong>on</strong>s. At the<br />

same time FRep_Node is resp<strong>on</strong>sible for travers<str<strong>on</strong>g>in</str<strong>on</strong>g>g the nodes (see Secti<strong>on</strong> 4.4.2), build<str<strong>on</strong>g>in</str<strong>on</strong>g>g the<br />

FRep tree and outputt<str<strong>on</strong>g>in</str<strong>on</strong>g>g the mesh (see Secti<strong>on</strong> 4.4.3).<br />

SOP_Node<br />

FRep_Node<br />

- m_templateList[] : PRM_Template<br />

- m_variables[] : CH_LocalVariable<br />

- m_attrNames[] : PRM_Name<br />

+ myC<strong>on</strong>structor(i_net : OP_Network, i_name : c<strong>on</strong>st char, i_op : OP_Operator) : OP_ERROR<br />

+ getId() : unsigned <str<strong>on</strong>g>in</str<strong>on</strong>g>t<br />

+ fillParameters(i_entity : ENTITY_BASE_T*, i_now : double, i_srcNode = NULL : OP_Node) : BOOL<br />

+ fillParametersTransform(i_entity : ENTITY_BASE_T, i_now : double, i_thisNode : OP_Node) : BOOL<br />

+ cookMySop(i_c<strong>on</strong>text : OP_C<strong>on</strong>text&) : OP_ERROR<br />

+ cookMyGuide1(i_c<strong>on</strong>text : OP_C<strong>on</strong>text&) : OP_ERROR<br />

- gather(i_now : double) : OP_ERROR<br />

- generateMesh(i_node : ENTITY_NODE_T*, i_now : double) : OP_ERROR<br />

- retrieveChildren(i_node : OP_Node, i_now : double) : ENTITY_NODE_T*<br />

Box_Node CSG_Node Bend_Node Metamorph_Node<br />

Sphere_Node<br />

Blend_Node<br />

Twist_Node<br />

Instancer_Node<br />

Torus_Node<br />

Bounded_Blend_Node<br />

Taper_Node<br />

Sphere_Sweep_Node<br />

C<strong>on</strong>e_Node<br />

Deform_Po<str<strong>on</strong>g>in</str<strong>on</strong>g>t_Node<br />

Cyl<str<strong>on</strong>g>in</str<strong>on</strong>g>der_Node<br />

Figure 4.1: Class diagram of custom Houd<str<strong>on</strong>g>in</str<strong>on</strong>g>i nodes<br />

15

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!