本文整理了Java中com.jme3.scene.Spatial.depthFirstTraversal()
方法的一些代码示例,展示了Spatial.depthFirstTraversal()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Spatial.depthFirstTraversal()
方法的具体详情如下:
包路径:com.jme3.scene.Spatial
类名称:Spatial
方法名:depthFirstTraversal
[英]Visit each scene graph element ordered by DFS with the default post order mode.
[中]使用默认的后期排序模式访问DFS排序的每个场景图形元素。
代码示例来源:origin: jMonkeyEngine/jmonkeyengine
/**
* Visit each scene graph element ordered by DFS with the default post order mode.
* @param visitor
* @see #depthFirstTraversal(com.jme3.scene.SceneGraphVisitor, com.jme3.scene.Spatial.DFSMode)
*/
public void depthFirstTraversal(SceneGraphVisitor visitor) {
depthFirstTraversal(visitor, DFSMode.POST_ORDER);
}
代码示例来源:origin: jMonkeyEngine/jmonkeyengine
@Override
protected void controlUpdate(float tpf) {
if (!enabled) {
return;
}
// gathering geometries in the sub graph.
// This must be done in the update phase as the gathering might add a matparam override
targets.clear();
this.spatial.depthFirstTraversal(targetLocator);
}
代码示例来源:origin: jMonkeyEngine/jmonkeyengine
public static Spatial migrate(Spatial source) {
Map<Skeleton, Armature> skeletonArmatureMap = new HashMap<>();
animControlVisitor.setMappings(skeletonArmatureMap);
source.depthFirstTraversal(animControlVisitor);
skeletonControlVisitor.setMappings(skeletonArmatureMap);
source.depthFirstTraversal(skeletonControlVisitor);
return source;
}
代码示例来源:origin: jMonkeyEngine/jmonkeyengine
@Override
public void depthFirstTraversal(SceneGraphVisitor visitor, DFSMode mode) {
if (mode == DFSMode.POST_ORDER) {
for (Spatial child : children.getArray()) {
child.depthFirstTraversal(visitor);
}
visitor.visit(this);
} else { //pre order
visitor.visit(this);
for (Spatial child : children.getArray()) {
child.depthFirstTraversal(visitor);
}
}
}
@Override
代码示例来源:origin: jMonkeyEngine/jmonkeyengine
public static void validateScene(Spatial scene) {
scene.updateGeometricState();
scene.depthFirstTraversal(VISITOR);
}
代码示例来源:origin: jMonkeyEngine/jmonkeyengine
public ArmatureDebugger addArmatureFrom(Armature armature, Spatial forSpatial) {
ArmatureDebugger ad = armatures.get(armature);
if(ad != null){
return ad;
}
JointInfoVisitor visitor = new JointInfoVisitor(armature);
forSpatial.depthFirstTraversal(visitor);
ad = new ArmatureDebugger(forSpatial.getName() + "_Armature", armature, visitor.deformingJoints);
ad.setLocalTransform(forSpatial.getWorldTransform());
if (forSpatial instanceof Node) {
List<Geometry> geoms = new ArrayList<>();
findGeoms((Node) forSpatial, geoms);
if (geoms.size() == 1) {
ad.setLocalTransform(geoms.get(0).getWorldTransform());
}
}
armatures.put(armature, ad);
debugNode.attachChild(ad);
if (isInitialized()) {
ad.initialize(app.getAssetManager(), app.getCamera());
}
return ad;
}
代码示例来源:origin: jMonkeyEngine/jmonkeyengine
private void displayNormals(Spatial s) {
final Node debugTangents = new Node("debug tangents");
debugTangents.setCullHint(Spatial.CullHint.Never);
rootNode.attachChild(debugTangents);
final Material debugMat = assetManager.loadMaterial("Common/Materials/VertexColor.j3m");
debugMat.getAdditionalRenderState().setLineWidth(2);
s.depthFirstTraversal(new SceneGraphVisitorAdapter() {
@Override
public void visit(Geometry g) {
Mesh m = g.getMesh();
Geometry debug = new Geometry(
"debug tangents geom",
TangentBinormalGenerator.genNormalLines(m, 0.1f)
);
debug.setMaterial(debugMat);
debug.setCullHint(Spatial.CullHint.Never);
debug.setLocalTransform(g.getWorldTransform());
debugTangents.attachChild(debug);
}
});
}
代码示例来源:origin: jMonkeyEngine/jmonkeyengine
badModel.depthFirstTraversal(new SceneGraphVisitorAdapter(){
@Override
public void visit(Geometry g){
代码示例来源:origin: tonihele/OpenKeeper
private static void assignMapsToMaterial(Spatial model, AssetManager assetManager) {
model.depthFirstTraversal(new SceneGraphVisitor() {
@Override
public void visit(Spatial spatial) {
if (spatial instanceof Geometry) {
Material material = ((Geometry) spatial).getMaterial();
assignMapsToMaterial(assetManager, material);
}
}
});
}
代码示例来源:origin: org.jmonkeyengine/jme3-core
/**
* Visit each scene graph element ordered by DFS with the default post order mode.
* @param visitor
* @see #depthFirstTraversal(com.jme3.scene.SceneGraphVisitor, com.jme3.scene.Spatial.DFSMode)
*/
public void depthFirstTraversal(SceneGraphVisitor visitor) {
depthFirstTraversal(visitor, DFSMode.POST_ORDER);
}
代码示例来源:origin: net.sf.phat/phat-core
public static void updateLocationAndRotation(Spatial spatial) {
SceneGraphVisitor visitor = new SceneGraphVisitor() {
@Override
public void visit(Spatial spat) {
RigidBodyControl rbc = spat.getControl(RigidBodyControl.class);
if (rbc != null) {
rbc.setPhysicsLocation(spat.getWorldTranslation());
rbc.setPhysicsRotation(spat.getWorldRotation());
}
}
};
spatial.depthFirstTraversal(visitor);
}
代码示例来源:origin: info.projectkyoto/mms-engine
public void add(Spatial sp) {
sp.depthFirstTraversal(new SceneGraphVisitorAdapter() {
@Override
public void visit(Geometry geom) {
add(geom);
}
});
}
public void add(Geometry geom) {
代码示例来源:origin: net.sf.phat/phat-core
public static void setHighPhysicsPrecision(Spatial spatial) {
final float linear = 0.0001f;
final float angular = 0.0001f;
final float threshold = 0.0001f;
final float radius = 1f;
SceneGraphVisitor visitor = new SceneGraphVisitor() {
@Override
public void visit(Spatial spat) {
RigidBodyControl rbc = spat.getControl(RigidBodyControl.class);
if (rbc != null) {
rbc.setSleepingThresholds(linear, angular);
rbc.setCcdMotionThreshold(threshold);
rbc.setCcdSweptSphereRadius(radius);
}
}
};
spatial.depthFirstTraversal(visitor);
}
代码示例来源:origin: tonihele/OpenKeeper
spatial.depthFirstTraversal(new SceneGraphVisitor() {
@Override
public void visit(Spatial spatial) {
代码示例来源:origin: tonihele/OpenKeeper
/**
* Creates a blueprint material for the wanted spatial
*
* @param assetManager the asset manager
* @param spatial the spatial which to change to blueprint
*/
public static void setBlueprint(AssetManager assetManager, Spatial spatial) {
spatial.depthFirstTraversal(new SceneGraphVisitor() {
@Override
public void visit(Spatial spatial) {
if (!(spatial instanceof Geometry)) {
return;
}
// Don't highlight non-removables
if (Boolean.FALSE.equals(spatial.getUserData(AssetUtils.USER_DATA_KEY_REMOVABLE))) {
return;
}
try {
Material mat = new Material(assetManager,
"Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("Color", new ColorRGBA(0, 0, 0.8f, 0.4f));
mat.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
spatial.setMaterial(mat);
} catch (Exception e) {
logger.log(Level.WARNING, "Failed to set material color!", e);
}
}
});
}
代码示例来源:origin: tonihele/OpenKeeper
spatial.depthFirstTraversal(new SceneGraphVisitor() {
@Override
public void visit(Spatial spatial) {
代码示例来源:origin: tonihele/OpenKeeper
private void toggleWireframe() {
Spatial spat = rootNode.getChild(ModelViewer.NODE_NAME);
if (spat != null) {
spat.depthFirstTraversal(new SceneGraphVisitor() {
@Override
public void visit(Spatial spatial) {
if (spatial instanceof Geometry) {
((Geometry) spatial).getMaterial().getAdditionalRenderState().setWireframe(wireframe);
}
}
});
}
}
代码示例来源:origin: info.projectkyoto/mms-engine
@Override
public void depthFirstTraversal(SceneGraphVisitor visitor) {
for (Spatial child : children.getArray()) {
child.depthFirstTraversal(visitor);
}
visitor.visit(this);
}
代码示例来源:origin: org.jmonkeyengine/jme3-core
@Override
public void depthFirstTraversal(SceneGraphVisitor visitor, DFSMode mode) {
if (mode == DFSMode.POST_ORDER) {
for (Spatial child : children.getArray()) {
child.depthFirstTraversal(visitor);
}
visitor.visit(this);
} else { //pre order
visitor.visit(this);
for (Spatial child : children.getArray()) {
child.depthFirstTraversal(visitor);
}
}
}
@Override
代码示例来源:origin: tonihele/OpenKeeper
private void toggleShowNormals() {
Spatial spat = rootNode.getChild(ModelViewer.NODE_NAME);
if (spat != null && spat instanceof Node) {
// See if it already has the normal meshes generated
Node normals = (Node) ((Node) spat).getChild(ModelViewer.NODE_NAME_NORMALS);
if (normals != null) {
normals.setCullHint(showNormals ? Spatial.CullHint.Never : Spatial.CullHint.Always);
} else if (showNormals) {
// Generate
final Node nodeNormals = new Node(ModelViewer.NODE_NAME_NORMALS);
spat.depthFirstTraversal(new SceneGraphVisitor() {
@Override
public void visit(Spatial spatial) {
if (spatial instanceof Geometry) {
Geometry g = (Geometry) spatial;
Mesh normalMesh = TangentBinormalGenerator.genNormalLines(g.getMesh(), 0.1f);
Geometry normalGeometry = new Geometry(g.getName() + "Normal", normalMesh);
Material mat = new Material(assetManager,
"Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("Color", ColorRGBA.Red);
normalGeometry.setMaterial(mat);
nodeNormals.attachChild(normalGeometry);
}
}
});
nodeNormals.setCullHint(Spatial.CullHint.Never);
((Node) spat).attachChild(nodeNormals);
}
}
}
内容来源于网络,如有侵权,请联系作者删除!