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