use of com.jme3.math.Quaternion in project jmonkeyengine by jMonkeyEngine.
the class TestMultiViewsFilters method simpleInitApp.
public void simpleInitApp() {
// create the geometry and attach it
Geometry teaGeom = (Geometry) assetManager.loadModel("Models/Teapot/Teapot.obj");
teaGeom.scale(3);
teaGeom.getMaterial().setColor("GlowColor", ColorRGBA.Green);
DirectionalLight dl = new DirectionalLight();
dl.setColor(ColorRGBA.White);
dl.setDirection(Vector3f.UNIT_XYZ.negate());
rootNode.addLight(dl);
rootNode.attachChild(teaGeom);
// Setup first view
cam.setViewPort(.5f, 1f, 0f, 0.5f);
cam.setLocation(new Vector3f(3.3212643f, 4.484704f, 4.2812433f));
cam.setRotation(new Quaternion(-0.07680723f, 0.92299235f, -0.2564353f, -0.27645364f));
// Setup second view
Camera cam2 = cam.clone();
cam2.setViewPort(0f, 0.5f, 0f, 0.5f);
cam2.setLocation(new Vector3f(-0.10947256f, 1.5760219f, 4.81758f));
cam2.setRotation(new Quaternion(0.0010108891f, 0.99857414f, -0.04928594f, 0.020481428f));
final ViewPort view2 = renderManager.createMainView("Bottom Left", cam2);
view2.setClearFlags(true, true, true);
view2.attachScene(rootNode);
// Setup third view
Camera cam3 = cam.clone();
cam3.setName("cam3");
cam3.setViewPort(0f, .5f, .5f, 1f);
cam3.setLocation(new Vector3f(0.2846221f, 6.4271426f, 0.23380789f));
cam3.setRotation(new Quaternion(0.004381671f, 0.72363687f, -0.69015175f, 0.0045953835f));
final ViewPort view3 = renderManager.createMainView("Top Left", cam3);
view3.setClearFlags(true, true, true);
view3.attachScene(rootNode);
// Setup fourth view
Camera cam4 = cam.clone();
cam4.setName("cam4");
cam4.setViewPort(.5f, 1f, .5f, 1f);
cam4.setLocation(new Vector3f(4.775564f, 1.4548365f, 0.11491505f));
cam4.setRotation(new Quaternion(0.02356979f, -0.74957186f, 0.026729556f, 0.66096294f));
final ViewPort view4 = renderManager.createMainView("Top Right", cam4);
view4.setClearFlags(true, true, true);
view4.attachScene(rootNode);
// Camera cam5 = new Camera(200, 200);
// cam5.setFrustumPerspective(45f, (float)cam.getWidth() / cam.getHeight(), 1f, 1000f);
// cam5.setName("cam5");
// cam5.setViewPort(5.23f, 6.33f, 0.56f, 1.66f);
// this.setViewPortAreas(5.23f, 6.33f, 0.56f, 1.66f);
// this.setViewPortCamSize(200, 200);
// 1046,1266,112,332
Camera cam5 = cam.clone();
cam5.setName("cam5");
cam5.setViewPort(1046f / settings.getWidth(), 1266f / settings.getWidth(), 112f / settings.getHeight(), 332f / settings.getHeight());
cam5.setLocation(new Vector3f(0.2846221f, 6.4271426f, 0.23380789f));
cam5.setRotation(new Quaternion(0.004381671f, 0.72363687f, -0.69015175f, 0.0045953835f));
final ViewPort view5 = renderManager.createMainView("center", cam5);
view5.setClearFlags(true, true, true);
view5.attachScene(rootNode);
rootNode.attachChild(SkyFactory.createSky(assetManager, "Textures/Sky/Bright/BrightSky.dds", false));
final FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
final FilterPostProcessor fpp2 = new FilterPostProcessor(assetManager);
final FilterPostProcessor fpp3 = new FilterPostProcessor(assetManager);
final FilterPostProcessor fpp4 = new FilterPostProcessor(assetManager);
final FilterPostProcessor fpp5 = new FilterPostProcessor(assetManager);
// fpp.addFilter(new WaterFilter(rootNode, Vector3f.UNIT_Y.mult(-1)));
fpp3.addFilter(new CartoonEdgeFilter());
fpp2.addFilter(new CrossHatchFilter());
final FogFilter ff = new FogFilter(ColorRGBA.Yellow, 0.7f, 2);
fpp.addFilter(ff);
final RadialBlurFilter rbf = new RadialBlurFilter(1, 10);
// rbf.setEnabled(false);
fpp.addFilter(rbf);
SSAOFilter f = new SSAOFilter(1.8899765f, 20.490374f, 0.4699998f, 0.1f);
;
fpp4.addFilter(f);
SSAOUI ui = new SSAOUI(inputManager, f);
fpp5.addFilter(new BloomFilter(BloomFilter.GlowMode.Objects));
viewPort.addProcessor(fpp);
view2.addProcessor(fpp2);
view3.addProcessor(fpp3);
view4.addProcessor(fpp4);
view5.addProcessor(fpp5);
inputManager.addListener(new ActionListener() {
public void onAction(String name, boolean isPressed, float tpf) {
if (name.equals("press") && isPressed) {
if (filterEnabled) {
viewPort.removeProcessor(fpp);
view2.removeProcessor(fpp2);
view3.removeProcessor(fpp3);
view4.removeProcessor(fpp4);
view5.removeProcessor(fpp5);
} else {
viewPort.addProcessor(fpp);
view2.addProcessor(fpp2);
view3.addProcessor(fpp3);
view4.addProcessor(fpp4);
view5.addProcessor(fpp5);
}
filterEnabled = !filterEnabled;
}
if (name.equals("filter") && isPressed) {
ff.setEnabled(!ff.isEnabled());
rbf.setEnabled(!rbf.isEnabled());
}
}
}, "press", "filter");
inputManager.addMapping("press", new KeyTrigger(KeyInput.KEY_SPACE));
inputManager.addMapping("filter", new KeyTrigger(KeyInput.KEY_F));
}
use of com.jme3.math.Quaternion in project jmonkeyengine by jMonkeyEngine.
the class TestMultiplesFilters method simpleInitApp.
public void simpleInitApp() {
this.flyCam.setMoveSpeed(10);
cam.setLocation(new Vector3f(6.0344796f, 1.5054002f, 55.572033f));
cam.setRotation(new Quaternion(0.0016069f, 0.9810479f, -0.008143323f, 0.19358753f));
// load sky
rootNode.attachChild(SkyFactory.createSky(assetManager, "Textures/Sky/Bright/BrightSky.dds", false));
// load the level from zip or http zip
if (useHttp) {
assetManager.registerLocator("http://jmonkeyengine.googlecode.com/files/wildhouse.zip", HttpZipLocator.class);
} else {
assetManager.registerLocator("wildhouse.zip", ZipLocator.class);
}
Spatial scene = assetManager.loadModel("main.scene");
DirectionalLight sun = new DirectionalLight();
sun.setDirection(new Vector3f(-0.4790551f, -0.39247334f, -0.7851566f));
sun.setColor(ColorRGBA.White.clone().multLocal(2));
scene.addLight(sun);
fpp = new FilterPostProcessor(assetManager);
// fpp.setNumSamples(4);
ssaoFilter = new SSAOFilter(0.92f, 2.2f, 0.46f, 0.2f);
final WaterFilter water = new WaterFilter(rootNode, new Vector3f(-0.4790551f, -0.39247334f, -0.7851566f));
water.setWaterHeight(-20);
SSAOUI ui = new SSAOUI(inputManager, ssaoFilter);
final BloomFilter bloom = new BloomFilter();
final ColorOverlayFilter overlay = new ColorOverlayFilter(ColorRGBA.LightGray);
fpp.addFilter(ssaoFilter);
fpp.addFilter(water);
fpp.addFilter(bloom);
fpp.addFilter(overlay);
viewPort.addProcessor(fpp);
rootNode.attachChild(scene);
inputManager.addListener(new ActionListener() {
public void onAction(String name, boolean isPressed, float tpf) {
if ("toggleSSAO".equals(name) && isPressed) {
if (ssaoFilter.isEnabled()) {
ssaoFilter.setEnabled(false);
} else {
ssaoFilter.setEnabled(true);
}
}
if ("toggleWater".equals(name) && isPressed) {
if (water.isEnabled()) {
water.setEnabled(false);
} else {
water.setEnabled(true);
}
}
if ("toggleBloom".equals(name) && isPressed) {
if (bloom.isEnabled()) {
bloom.setEnabled(false);
} else {
bloom.setEnabled(true);
}
}
if ("toggleOverlay".equals(name) && isPressed) {
if (overlay.isEnabled()) {
overlay.setEnabled(false);
} else {
overlay.setEnabled(true);
}
}
}
}, "toggleSSAO", "toggleBloom", "toggleWater", "toggleOverlay");
inputManager.addMapping("toggleSSAO", new KeyTrigger(KeyInput.KEY_1));
inputManager.addMapping("toggleWater", new KeyTrigger(KeyInput.KEY_2));
inputManager.addMapping("toggleBloom", new KeyTrigger(KeyInput.KEY_3));
inputManager.addMapping("toggleOverlay", new KeyTrigger(KeyInput.KEY_4));
}
use of com.jme3.math.Quaternion in project jmonkeyengine by jMonkeyEngine.
the class TestPostFiltersCompositing method simpleInitApp.
public void simpleInitApp() {
this.flyCam.setMoveSpeed(10);
cam.setLocation(new Vector3f(0.028406568f, 2.015769f, 7.386517f));
cam.setRotation(new Quaternion(-1.0729783E-5f, 0.9999721f, -0.0073241726f, -0.0014647911f));
makeScene();
//Creating the main view port post processor
FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
fpp.addFilter(new ColorOverlayFilter(ColorRGBA.Blue));
viewPort.addProcessor(fpp);
//creating a frame buffer for the mainviewport
FrameBuffer mainVPFrameBuffer = new FrameBuffer(cam.getWidth(), cam.getHeight(), 1);
Texture2D mainVPTexture = new Texture2D(cam.getWidth(), cam.getHeight(), Image.Format.RGBA8);
mainVPFrameBuffer.addColorTexture(mainVPTexture);
mainVPFrameBuffer.setDepthBuffer(Image.Format.Depth);
viewPort.setOutputFrameBuffer(mainVPFrameBuffer);
//creating the post processor for the gui viewport
final FilterPostProcessor guifpp = new FilterPostProcessor(assetManager);
guifpp.setFrameBufferFormat(Image.Format.RGBA8);
guifpp.addFilter(new ColorOverlayFilter(ColorRGBA.Red));
//this will compose the main viewport texture with the guiviewport back buffer.
//Note that you can switch the order of the filters so that guiviewport filters are applied or not to the main viewport texture
guifpp.addFilter(new ComposeFilter(mainVPTexture));
guiViewPort.addProcessor(guifpp);
//compositing is done by mixing texture depending on the alpha channel,
//it's important that the guiviewport clear color alpha value is set to 0
guiViewPort.setBackgroundColor(ColorRGBA.BlackNoAlpha);
guiViewPort.setClearColor(true);
}
use of com.jme3.math.Quaternion in project jmonkeyengine by jMonkeyEngine.
the class TestOgreComplexAnim method simpleInitApp.
@Override
public void simpleInitApp() {
flyCam.setMoveSpeed(10f);
cam.setLocation(new Vector3f(6.4013605f, 7.488437f, 12.843031f));
cam.setRotation(new Quaternion(-0.060740203f, 0.93925786f, -0.2398315f, -0.2378785f));
DirectionalLight dl = new DirectionalLight();
dl.setDirection(new Vector3f(-0.1f, -0.7f, -1).normalizeLocal());
dl.setColor(new ColorRGBA(1f, 1f, 1f, 1.0f));
rootNode.addLight(dl);
Node model = (Node) assetManager.loadModel("Models/Oto/Oto.mesh.xml");
control = model.getControl(AnimControl.class);
AnimChannel feet = control.createChannel();
AnimChannel leftHand = control.createChannel();
AnimChannel rightHand = control.createChannel();
// feet will dodge
feet.addFromRootBone("hip.right");
feet.addFromRootBone("hip.left");
feet.setAnim("Dodge");
feet.setSpeed(2);
feet.setLoopMode(LoopMode.Cycle);
// will blend over 15 seconds to stand
feet.setAnim("Walk", 15);
feet.setSpeed(0.25f);
feet.setLoopMode(LoopMode.Cycle);
// left hand will pull
leftHand.addFromRootBone("uparm.right");
leftHand.setAnim("pull");
leftHand.setSpeed(.5f);
// will blend over 15 seconds to stand
leftHand.setAnim("stand", 15);
// right hand will push
rightHand.addBone("spinehigh");
rightHand.addFromRootBone("uparm.left");
rightHand.setAnim("push");
SkeletonDebugger skeletonDebug = new SkeletonDebugger("skeleton", control.getSkeleton());
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat.getAdditionalRenderState().setWireframe(true);
mat.setColor("Color", ColorRGBA.Green);
mat.getAdditionalRenderState().setDepthTest(false);
skeletonDebug.setMaterial(mat);
model.attachChild(skeletonDebug);
rootNode.attachChild(model);
}
use of com.jme3.math.Quaternion in project jmonkeyengine by jMonkeyEngine.
the class TestOgreComplexAnim method simpleUpdate.
@Override
public void simpleUpdate(float tpf) {
Bone b = control.getSkeleton().getBone("spinehigh");
Bone b2 = control.getSkeleton().getBone("uparm.left");
angle += tpf * rate;
if (angle > FastMath.HALF_PI / 2f) {
angle = FastMath.HALF_PI / 2f;
rate = -1;
} else if (angle < -FastMath.HALF_PI / 2f) {
angle = -FastMath.HALF_PI / 2f;
rate = 1;
}
Quaternion q = new Quaternion();
q.fromAngles(0, angle, 0);
b.setUserControl(true);
b.setUserTransforms(Vector3f.ZERO, q, Vector3f.UNIT_XYZ);
b2.setUserControl(true);
b2.setUserTransforms(Vector3f.ZERO, Quaternion.IDENTITY, new Vector3f(1 + angle, 1 + angle, 1 + angle));
}
Aggregations