Hello ,
I’m using Aaron Perkins code for multiple viewports for a large terrain which works very well. However I’m trying to add a Particle emitter to simulate volcanoes and whatever I do I cant seem see the emitter.
Here is the code I use to create the emitter and multiple viewports (note that the emitter is attached to the rootNode.
I’d be grateful if anyone can spot an obvious flaw.
//*******************************
// Add some smoke emitters
//*******************************
smokeEmitter = new ParticleEmitter("Emitter", Type.Triangle, 100);
Material smokeMat = new Material(assetManager,"Common/MatDefs/Misc/Particle.j3md");
smokeMat.setTexture("Texture",assetManager.loadTexture("Materials/flame.png"));
smokeEmitter.setMaterial(smokeMat);
smokeEmitter.setImagesX(2);
smokeEmitter.setImagesY(2);
smokeEmitter.setEndColor( new ColorRGBA(1f, 0f, 0f, 1f)); // red
smokeEmitter.setStartColor(new ColorRGBA(1f, 1f, 0f, 0.5f)); // yellow
smokeEmitter.getParticleInfluencer().setInitialVelocity(new Vector3f(0, 2, 0));
smokeEmitter.setStartSize(1.5f);
smokeEmitter.setEndSize(0.1f);
smokeEmitter.setGravity(0, 0, 0);
smokeEmitter.setLowLife(1f);
smokeEmitter.setHighLife(3f);
smokeEmitter.getParticleInfluencer().setVelocityVariation(0.3f);
// Vector3f smokeLocation = new Vector3f( craters[0].xpos,0, craters[0].ypos);
// smokeLocation.setY(terrain.getHeight(new Vector2f(craters[0].xpos,craters[0].ypos))+3000f);
Vector3f smokeLocation = new Vector3f( 0,0,0);
smokeLocation.setY(terrain.getHeight(new Vector2f(0,0)));
System.out.println("cx=" + smokeLocation.x + " cy=" + smokeLocation.y + " cz=" + smokeLocation.z + " hscale=" + hScale + " yScale=" + yScale);
smokeEmitter.setLocalTranslation(smokeLocation);
// smokeEmitter.setLocalTranslation(0,terrainMax+200,0);
rootNode.attachChild(smokeEmitter);
smokeEmitter.scale(100);
smokeEmitter.setEnabled(true);
.
.
.
multiViewport= true;
if(multiViewport)
{
farViewPort = this.getViewPort();
farCam = this.getCamera();
nearCam = this.farCam.clone();
nearCam.setFrustumPerspective(45f, (float)nearCam.getWidth()/nearCam.getHeight(), 0.1f, 310f);
farCam.setFrustumPerspective(45f, (float)farCam.getWidth()/farCam.getHeight(), 300f, 1e7f);
nearCam.setViewPort(0f, 1f, 0.0f, 1.0f);
nearViewPort = this.getRenderManager().createMainView("NearView", nearCam);
nearViewPort.setClearFlags(false,false,true);
nearViewPort.attachScene(rootNode);
}