Panda3D
Loading...
Searching...
No Matches
characterMaker.h
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file characterMaker.h
10 * @author drose
11 * @date 2002-03-06
12 */
13
14#ifndef CHARACTERMAKER_H
15#define CHARACTERMAKER_H
16
17#include "pandabase.h"
18
19#include "vertexTransform.h"
20#include "vertexSlider.h"
21#include "character.h"
23#include "typedef.h"
24#include "pmap.h"
25
26
27class EggNode;
28class EggGroup;
29class EggGroupNode;
30class EggPrimitive;
31class EggBin;
32class PartGroup;
34class Character;
35class GeomNode;
36class CharacterSlider;
37class MovingPartBase;
38class EggLoader;
39class PandaNode;
40
41/**
42 * Converts an EggGroup hierarchy, beginning with a group with <Dart> set, to
43 * a character node with joints.
44 */
45class EXPCL_PANDA_EGG2PG CharacterMaker {
46public:
47 CharacterMaker(EggGroup *root, EggLoader &loader, bool structured = false);
48
49 Character *make_node();
50
51 std::string get_name() const;
52 PartGroup *egg_to_part(EggNode *egg_node) const;
53 VertexTransform *egg_to_transform(EggNode *egg_node);
54 int egg_to_index(EggNode *egg_node) const;
55 PandaNode *part_to_node(PartGroup *part, const std::string &name) const;
56
57 int create_slider(const std::string &name);
58 VertexSlider *egg_to_slider(const std::string &name);
59
60private:
61 CharacterJointBundle *make_bundle();
62 void build_joint_hierarchy(EggNode *egg_node, PartGroup *part, int index);
63 void parent_joint_nodes(PartGroup *part);
64
65 void make_geometry(EggNode *egg_node);
66
67 EggGroupNode *determine_primitive_home(EggPrimitive *egg_primitive);
68 EggGroupNode *determine_bin_home(EggBin *egg_bin);
69 VertexTransform *get_identity_transform();
70
72 NodeMap _node_map;
73
74 typedef vector_PartGroupStar Parts;
75 Parts _parts;
76
77 typedef pmap<int, PT(VertexTransform) > VertexTransforms;
78 VertexTransforms _vertex_transforms;
79 PT(VertexTransform) _identity_transform;
80
81 typedef pmap<std::string, PT(VertexSlider) > VertexSliders;
82 VertexSliders _vertex_sliders;
83
84 EggLoader &_loader;
85 EggGroup *_egg_root;
86 PT(Character) _character_node;
87 CharacterJointBundle *_bundle;
88 PartGroup *_morph_root;
89 PartGroup *_skeleton_root;
90
91 bool _structured;
92
93};
94
95#endif
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
The collection of all the joints and sliders in the character.
Converts an EggGroup hierarchy, beginning with a group with <Dart> set, to a character node with join...
This is a morph slider within the character.
An animated character, with skeleton-morph animation and either soft- skinned or hard-skinned vertice...
Definition character.h:38
A type of group node that holds related subnodes.
Definition eggBin.h:26
A base class for nodes in the hierarchy that are not leaf nodes.
The main glue of the egg hierarchy, this corresponds to the <Group>, <Instance>, and <Joint> type nod...
Definition eggGroup.h:34
Converts an egg data structure, possibly read from an egg file but not necessarily,...
Definition eggLoader.h:67
A base class for things that may be directly added into the egg hierarchy.
Definition eggNode.h:36
A base class for any of a number of kinds of geometry primitives: polygons, point lights,...
A node that holds Geom objects, renderable pieces of geometry.
Definition geomNode.h:34
This is the base class for a single animatable piece that may be bound to one channel (or more,...
A basic node of the scene graph or data graph.
Definition pandaNode.h:65
This is the base class for PartRoot and MovingPart.
Definition partGroup.h:43
This is an abstract base class that retains some slider value, which is a linear value that typically...
This is an abstract base class that holds a pointer to some transform, computed in some arbitrary way...
This is our own Panda specialization on the default STL map.
Definition pmap.h:49
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.