Graphics Reference
In-Depth Information
CModel::CModel() : m _ root _ node( L"root node" ) {
.
Source file. Model.cpp
file in the Model folder of
the D3D _ SimpleHierarchy
project.
// Base node for user interaction
UWB _ SceneNode * pBaseNode = new UWB _ SceneNode(...);
// Node for xform Cylinder Mesh
UWB _ SceneNode * pCylinderNode = new UWB _ SceneNode(...);
// Top node for user interaction
UWB _ SceneNode * pTopNode = new UWB _ SceneNode(...);
// Node for xform Cone Mesh
UWB _ SceneNode * pConeNode = new UWB _ SceneNode(...);
.
A:
B:
pBaseNode->InsertChildNode(pCylinderNode); // Cylinder is child of Base
pBaseNode->InsertChildNode(pTopNode);
// Top is child of Base
pTopNode->InsertChildNode(pConeNode);
// Cone is child of Top
m _ root _ node.InsertChildNode(pBaseNode);
// base is root of hierarchy
.
pMesh = new UWBD3D _ PrimitiveMesh(L"cylinder.x"); // Cylinder mesh primitive
.
xf1.UpdateRotationXByDegree(90);
C:
// X rotation of 90 degrees
xf1.SetScale( vec3 (3.0f/2.0f, 3.0f/2.0f, 2.0f));
// Scale to right radius/height
xf1.SetTranslation( vec3 (0.0f, 3.0f, 0.0f));
// ensure one end at origin
pCylinderNode->SetXformInfo(xf1);
// xform mesh to component location
.
pMesh = new UWBD3D _ PrimitiveMesh(L"OpenCone.x"); // Cone mesh primitive
.
xf2.UpdateRotationXByDegree(-90);
D:
// X rotation of -90 degrees
xf2.SetScale( vec3 (2.0f, 2.0f, 2.0f/3.0f));
// scale to right radius/height
xf2.SetTranslation( vec3 (0.0f, 7.0f, 0.0f));
// ensure tip at top of cylinder
pConeNode->SetXformInfo(xf2);
// xform mesh to component position
.
E:
m2.SetPivot( vec3 (0.0f, 6.0f, 0.0f)); // pivoted at top of cylinder
pTopNode->SetXformInfo(m2);
// top node pivoted at top of cylinder
.
Listing 16.21. Building a simple hierarchy.
Search WWH ::




Custom Search