01: /*
02: * Apollo - Motion capture and animation system
03: * Copyright (c) 2005 Apollo
04: *
05: * This program is free software; you can redistribute it and/or
06: * modify it under the terms of the GNU General Public License
07: * as published by the Free Software Foundation; either version 2
08: * of the License, or (at your option) any later version.
09: *
10: * This program is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: * GNU General Public License for more details.
14: *
15: * You should have received a copy of the GNU General Public License
16: * along with this program; if not, write to the Free Software
17: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18: *
19: * http://www.gnu.org/copyleft/gpl.html
20: *
21: * @author Giovane.Kuhn - brain@netuno.com.br
22: *
23: */
24: package org.apollo.trackmodel;
25:
26: import org.apollo.Visitor;
27: import org.apollo.bvh.Joint;
28: import org.apollo.datamodel.ModelPlan;
29: import org.apollo.datamodel.TrackingFrame;
30: import org.apollo.datamodel.TrackingVideo;
31:
32: /**
33: * Common base class for classes that positioner the joints throught the motion
34: * @author Giovane.Kuhn on 07/06/2005
35: */
36: public abstract class AbstractPositioner implements Visitor<Joint> {
37:
38: /** First tracking frame */
39: protected final TrackingFrame firstTrackFrame;
40:
41: /** Joint root of the model */
42: protected final Joint modelRoot;
43:
44: /** Tracking model plan */
45: protected final ModelPlan plan;
46:
47: /** Tracking frame that is being analyzed */
48: protected TrackingFrame actualTrackFrame;
49:
50: public AbstractPositioner(TrackingVideo video) {
51: this .firstTrackFrame = video.getFrame(0);
52: assert firstTrackFrame != null;
53: this .modelRoot = video.getFittedModelRoot(false);
54: assert modelRoot != null;
55: this .plan = video.getModelPlan();
56: assert plan != null;
57: }
58:
59: public abstract void track(TrackingFrame frame);
60:
61: }
|