| 1 |
#include <boost/python.hpp> |
|---|
| 2 |
|
|---|
| 3 |
#include <OpenSG/OSGConfig.h> |
|---|
| 4 |
#include <OpenSG/OSGBaseFunctions.h> |
|---|
| 5 |
|
|---|
| 6 |
#include <OpenSG/OSGGraphOp.h> |
|---|
| 7 |
#include <OpenSG/OSGGraphOpFactory.h> |
|---|
| 8 |
#include <OpenSG/OSGGraphOpSeq.h> |
|---|
| 9 |
|
|---|
| 10 |
#include "Nodes.h" |
|---|
| 11 |
#include "TestWindow.h" |
|---|
| 12 |
#include "Test.h" |
|---|
| 13 |
|
|---|
| 14 |
|
|---|
| 15 |
void doExit() |
|---|
| 16 |
{ |
|---|
| 17 |
OSG::osgExit(); |
|---|
| 18 |
} |
|---|
| 19 |
|
|---|
| 20 |
|
|---|
| 21 |
OSG::GraphOp* createGraphOp(const char* name) |
|---|
| 22 |
{ |
|---|
| 23 |
return OSG::GraphOpFactory::the().create(name); |
|---|
| 24 |
} |
|---|
| 25 |
|
|---|
| 26 |
OSG::GraphOpSeq* createGraphOpSeq(const char* ops) |
|---|
| 27 |
{ |
|---|
| 28 |
OSG::GraphOpSeq *seq = new OSG::GraphOpSeq; |
|---|
| 29 |
|
|---|
| 30 |
seq->setGraphOps(ops); |
|---|
| 31 |
|
|---|
| 32 |
return seq; |
|---|
| 33 |
} |
|---|
| 34 |
|
|---|
| 35 |
|
|---|
| 36 |
void traverse(OSG::GraphOp& g, NodeBase& b) |
|---|
| 37 |
{ |
|---|
| 38 |
OSG::NodePtr p = b.getNode(); |
|---|
| 39 |
g.traverse(p); |
|---|
| 40 |
} |
|---|
| 41 |
|
|---|
| 42 |
void traverseSeq(OSG::GraphOpSeq& g, NodeBase& b) |
|---|
| 43 |
{ |
|---|
| 44 |
OSG::NodePtr p = b.getNode(); |
|---|
| 45 |
g.run(p); |
|---|
| 46 |
} |
|---|
| 47 |
|
|---|
| 48 |
|
|---|
| 49 |
BOOST_PYTHON_MODULE(osgbench) |
|---|
| 50 |
{ |
|---|
| 51 |
using namespace boost::python; |
|---|
| 52 |
|
|---|
| 53 |
class_<NodeBase>("NodeBase") |
|---|
| 54 |
.def("dump", &NodeBase::dump) |
|---|
| 55 |
.def("save", &NodeBase::save) |
|---|
| 56 |
.def("iter", &NodeBase::iter) |
|---|
| 57 |
.def("geometries", &NodeBase::geometries) |
|---|
| 58 |
.def("transforms", &NodeBase::transforms) |
|---|
| 59 |
.def("clone", &NodeBase::clone) |
|---|
| 60 |
; |
|---|
| 61 |
|
|---|
| 62 |
class_<Group, bases<NodeBase> >("Group") |
|---|
| 63 |
.def("addChild", &Group::addChild) |
|---|
| 64 |
.def("subChild", &Group::subChild) |
|---|
| 65 |
; |
|---|
| 66 |
|
|---|
| 67 |
class_<Transform, bases<Group> >("Transform") |
|---|
| 68 |
.def("setTranslation", &Transform::setTranslation) |
|---|
| 69 |
; |
|---|
| 70 |
|
|---|
| 71 |
class_<Geometry, bases<NodeBase> >("Geometry") |
|---|
| 72 |
.def("translate", &Geometry::translate) |
|---|
| 73 |
.def("scale", &Geometry::scale) |
|---|
| 74 |
.def("setDlistCache", &Geometry::setDlistCache) |
|---|
| 75 |
; |
|---|
| 76 |
|
|---|
| 77 |
class_<NodeIterator>("NodeIterator") |
|---|
| 78 |
.def("next", &NodeIterator::next) |
|---|
| 79 |
.def("__iter__", &NodeIterator::__iter__) |
|---|
| 80 |
; |
|---|
| 81 |
|
|---|
| 82 |
class_<TypedNodeIterator<Geometry> >("GeometryNodeIterator") |
|---|
| 83 |
.def("next", &TypedNodeIterator<Geometry>::next) |
|---|
| 84 |
.def("__iter__", &TypedNodeIterator<Geometry>::__iter__) |
|---|
| 85 |
; |
|---|
| 86 |
|
|---|
| 87 |
class_<TypedNodeIterator<Transform> >("TransformNodeIterator") |
|---|
| 88 |
.def("next", &TypedNodeIterator<Transform>::next) |
|---|
| 89 |
.def("__iter__", &TypedNodeIterator<Transform>::__iter__) |
|---|
| 90 |
; |
|---|
| 91 |
|
|---|
| 92 |
class_<Image>("Image") |
|---|
| 93 |
.def("write", &Image::write) |
|---|
| 94 |
.def("clone", &Image::clone) |
|---|
| 95 |
.def("diff", &Image::diff) |
|---|
| 96 |
; |
|---|
| 97 |
|
|---|
| 98 |
def("makeBox", &makeBox); |
|---|
| 99 |
def("makeTorus", &makeTorus); |
|---|
| 100 |
def("makeSphere", &makeSphere); |
|---|
| 101 |
def("makePlane", &makePlane); |
|---|
| 102 |
def("makeShared", &makeShared); |
|---|
| 103 |
def("addRef", &addRef); |
|---|
| 104 |
def("subRef", &subRef); |
|---|
| 105 |
def("loadScene", &loadScene); |
|---|
| 106 |
|
|---|
| 107 |
|
|---|
| 108 |
void (TestWindow::*twSetScene)(NodeBase&) = &TestWindow::setScene; |
|---|
| 109 |
void (TestWindow::*twSetCamera)(OSG::Real32,OSG::Real32,OSG::Real32, |
|---|
| 110 |
OSG::Real32,OSG::Real32,OSG::Real32, |
|---|
| 111 |
OSG::Real32,OSG::Real32,OSG::Real32) = |
|---|
| 112 |
&TestWindow::setCamera; |
|---|
| 113 |
|
|---|
| 114 |
class_<TestWindow>("TestWindow") |
|---|
| 115 |
.def("setSize", &TestWindow::setSize) |
|---|
| 116 |
.def("setFullscreen", &TestWindow::setFullscreen) |
|---|
| 117 |
.def("setViewport", &TestWindow::setViewport) |
|---|
| 118 |
.def("getWidth", &TestWindow::getWidth) |
|---|
| 119 |
.def("getHeight", &TestWindow::getHeight) |
|---|
| 120 |
.def("getScene", &TestWindow::getScene) |
|---|
| 121 |
.def("setScene", twSetScene) |
|---|
| 122 |
.def("setCamera", twSetCamera) |
|---|
| 123 |
.def("open", &TestWindow::open) |
|---|
| 124 |
.def("close", &TestWindow::close) |
|---|
| 125 |
.def("redraw", &TestWindow::redraw) |
|---|
| 126 |
.def("setNearFar", &TestWindow::setNearFar) |
|---|
| 127 |
.def("setFov", &TestWindow::setFov) |
|---|
| 128 |
.def("showAll", &TestWindow::showAll) |
|---|
| 129 |
; |
|---|
| 130 |
|
|---|
| 131 |
|
|---|
| 132 |
void (Test::*tSetScene)(NodeBase&) = &Test::setScene; |
|---|
| 133 |
void (Test::*taddFAU) |
|---|
| 134 |
(OSG::Real32 fromx, OSG::Real32 fromy, OSG::Real32 fromz, |
|---|
| 135 |
OSG::Real32 atx, OSG::Real32 aty, OSG::Real32 atz, |
|---|
| 136 |
OSG::Real32 upx, OSG::Real32 upy, OSG::Real32 upz) |
|---|
| 137 |
= &Test::addFromAtUp; |
|---|
| 138 |
|
|---|
| 139 |
class_<Test>("Test") |
|---|
| 140 |
.def("setScene", tSetScene) |
|---|
| 141 |
.def("setWindow", &Test::setWindow) |
|---|
| 142 |
.def("setHeadlight", &Test::setHeadlight) |
|---|
| 143 |
.def("setNearFar", &Test::setNearFar) |
|---|
| 144 |
.def("clear", &Test::clear) |
|---|
| 145 |
.def("setNFrames", &Test::setNFrames) |
|---|
| 146 |
.def("setMinTime", &Test::setMinTime) |
|---|
| 147 |
.def("addFromAtUp", taddFAU) |
|---|
| 148 |
.def("addFromOri", &Test::addFromOri) |
|---|
| 149 |
.def("makeOrbit", &Test::makeOrbit) |
|---|
| 150 |
.def("makePirouette", &Test::makePirouette) |
|---|
| 151 |
.def("addFov", &Test::addFov) |
|---|
| 152 |
.def("setStatistics", &Test::setStatistics) |
|---|
| 153 |
.def("run", &Test::run) |
|---|
| 154 |
.def("snapshot", &Test::snapshot) |
|---|
| 155 |
.def("getFPS", &Test::getFPS) |
|---|
| 156 |
.def("getTime", &Test::getTime) |
|---|
| 157 |
.def("getNRenderedFrames", &Test::getNRenderedFrames) |
|---|
| 158 |
.def("getStatValue", &Test::getStatValue) |
|---|
| 159 |
.def("setVerbose", &Test::setVerbose) |
|---|
| 160 |
.def("setIgnoreGeometry", &Test::setIgnoreGeometry) |
|---|
| 161 |
.def("useRenderTraversal", &Test::useRenderTraversal) |
|---|
| 162 |
; |
|---|
| 163 |
|
|---|
| 164 |
class_<OSG::GraphOp, boost::noncopyable>("GraphOp", no_init) |
|---|
| 165 |
.def("traverse", &traverse) |
|---|
| 166 |
; |
|---|
| 167 |
|
|---|
| 168 |
class_<OSG::GraphOpSeq, boost::noncopyable>("GraphOpSeq", no_init) |
|---|
| 169 |
.def("traverseSeq", &traverseSeq) |
|---|
| 170 |
; |
|---|
| 171 |
|
|---|
| 172 |
def("createGraphOp", &createGraphOp, |
|---|
| 173 |
return_value_policy<manage_new_object>()); |
|---|
| 174 |
|
|---|
| 175 |
def("createGraphOpSeq", &createGraphOpSeq, |
|---|
| 176 |
return_value_policy<manage_new_object>()); |
|---|
| 177 |
|
|---|
| 178 |
|
|---|
| 179 |
|
|---|
| 180 |
OSG::osgInit(0, NULL); |
|---|
| 181 |
|
|---|
| 182 |
Py_AtExit(doExit); |
|---|
| 183 |
} |
|---|