Java源码示例:com.jme3.post.filters.BloomFilter
示例1
@Override
protected Sheet createSheet() {
Sheet sheet = super.createSheet();
Sheet.Set set = Sheet.createPropertiesSet();
set.setDisplayName("Bloom");
set.setName(Node.class.getName());
BloomFilter obj = (BloomFilter) filter;
if (obj == null) {
return sheet;
}
// set.put(makeProperty(obj, float.class, "getBloomIntensity", "setBloomIntensity", "Intensity"));
// set.put(makeProperty(obj, float.class, "getBlurScale", "setBlurScale", "Blur Scale"));
// set.put(makeProperty(obj, float.class, "getDownSamplingFactor", "setDownSamplingFactor", "Downsampling Factor"));
// set.put(makeProperty(obj, float.class, "getExposureCutOff", "setExposureCutOff", "Exposure Cutoff"));
// set.put(makeProperty(obj, float.class, "getExposurePower", "setExposurePower", "Exposure Power"));
createFields(BloomFilter.class, set, obj);
sheet.put(set);
return sheet;
}
示例2
@Override
public void simpleInitApp() {
final Node buggy = (Node) assetManager.loadModel("Models/Buggy/Buggy.j3o");
TextureKey key = new TextureKey("Textures/Sky/Bright/BrightSky.dds", true);
key.setGenerateMips(true);
key.setTextureTypeHint(Texture.Type.CubeMap);
final Texture tex = assetManager.loadTexture(key);
for (Spatial geom : buggy.getChildren()) {
if (geom instanceof Geometry) {
Material m = ((Geometry) geom).getMaterial();
m.setTexture("EnvMap", tex);
m.setVector3("FresnelParams", new Vector3f(0.05f, 0.18f, 0.11f));
}
}
flyCam.setEnabled(false);
ChaseCamera chaseCam = new ChaseCamera(cam, inputManager);
chaseCam.setLookAtOffset(new Vector3f(0,0.5f,-1.0f));
buggy.addControl(chaseCam);
rootNode.attachChild(buggy);
rootNode.attachChild(SkyFactory.createSky(assetManager, tex,
SkyFactory.EnvMapType.CubeMap));
FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
BloomFilter bf = new BloomFilter(BloomFilter.GlowMode.Objects);
bf.setBloomIntensity(2.3f);
bf.setExposurePower(0.6f);
fpp.addFilter(bf);
DirectionalLight l = new DirectionalLight();
l.setDirection(new Vector3f(0, -1, -1));
rootNode.addLight(l);
viewPort.addProcessor(fpp);
}
示例3
@Override
public void simpleInitApp() {
Node tank = (Node) assetManager.loadModel("Models/HoverTank/Tank2.mesh.xml");
flyCam.setEnabled(false);
ChaseCamera chaseCam = new ChaseCamera(cam, tank, inputManager);
chaseCam.setSmoothMotion(true);
chaseCam.setMaxDistance(100000);
chaseCam.setMinVerticalRotation(-FastMath.PI / 2);
viewPort.setBackgroundColor(ColorRGBA.DarkGray);
Geometry tankGeom = (Geometry) tank.getChild(0);
LodControl control = new LodControl();
tankGeom.addControl(control);
rootNode.attachChild(tank);
Vector3f lightDir = new Vector3f(-0.8719428f, -0.46824604f, 0.14304268f);
DirectionalLight dl = new DirectionalLight();
dl.setColor(new ColorRGBA(1.0f, 0.92f, 0.75f, 1f));
dl.setDirection(lightDir);
Vector3f lightDir2 = new Vector3f(0.70518064f, 0.5902297f, -0.39287305f);
DirectionalLight dl2 = new DirectionalLight();
dl2.setColor(new ColorRGBA(0.7f, 0.85f, 1.0f, 1f));
dl2.setDirection(lightDir2);
rootNode.addLight(dl);
rootNode.addLight(dl2);
rootNode.attachChild(tank);
FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
BloomFilter bf = new BloomFilter(BloomFilter.GlowMode.Objects);
bf.setBloomIntensity(2.0f);
bf.setExposurePower(1.3f);
fpp.addFilter(bf);
BloomUI bui = new BloomUI(inputManager, bf);
viewPort.addProcessor(fpp);
}
示例4
public LightDrawer(MapView view, AssetManager am, Node rootNode, ViewPort vp) {
this.view = view;
this.rootNode = rootNode;
FilterPostProcessor fpp = new FilterPostProcessor(am);
int SHADOWMAP_SIZE = 4096;
// sr = new DirectionalLightShadowRenderer(am, SHADOWMAP_SIZE, 1);
// sr.setEdgeFilteringMode(EdgeFilteringMode.PCF4);
// sr.setShadowIntensity((float) ModelManager.getBattlefield().getSunLight().shadowCaster.intensity);
// vp.addProcessor(sr);
sf = new DirectionalLightShadowFilter(am, SHADOWMAP_SIZE, 1);
sf.setEnabled(true);
sf.setEdgeFilteringMode(EdgeFilteringMode.PCF4);
sf.setShadowZExtend(SHADOWMAP_SIZE);
fpp.addFilter(sf);
// Ambiant occlusion filter
SSAOFilter ssaoFilter = new SSAOFilter(0.5f, 4f, 0.2f, 0.3f);
// fpp.addFilter(ssaoFilter);
// Glow filter
BloomFilter bloom = new BloomFilter(BloomFilter.GlowMode.Objects);
fpp.addFilter(bloom);
vp.addProcessor(fpp);
}
示例5
@Override
public void simpleInitApp() {
final Node buggy = (Node) assetManager.loadModel("Models/Buggy/Buggy.j3o");
TextureKey key = new TextureKey("Textures/Sky/Bright/BrightSky.dds", true);
key.setGenerateMips(true);
key.setAsCube(true);
final Texture tex = assetManager.loadTexture(key);
for (Spatial geom : buggy.getChildren()) {
if (geom instanceof Geometry) {
Material m = ((Geometry) geom).getMaterial();
m.setTexture("EnvMap", tex);
m.setVector3("FresnelParams", new Vector3f(0.05f, 0.18f, 0.11f));
}
}
flyCam.setEnabled(false);
ChaseCamera chaseCam = new ChaseCamera(cam, inputManager);
chaseCam.setLookAtOffset(new Vector3f(0,0.5f,-1.0f));
buggy.addControl(chaseCam);
rootNode.attachChild(buggy);
rootNode.attachChild(SkyFactory.createSky(assetManager, tex, false));
FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
BloomFilter bf = new BloomFilter(BloomFilter.GlowMode.Objects);
bf.setBloomIntensity(2.3f);
bf.setExposurePower(0.6f);
fpp.addFilter(bf);
viewPort.addProcessor(fpp);
}
示例6
@Override
public void simpleInitApp() {
Node tank = (Node) assetManager.loadModel("Models/HoverTank/Tank2.mesh.xml");
flyCam.setEnabled(false);
ChaseCamera chaseCam = new ChaseCamera(cam, tank, inputManager);
chaseCam.setSmoothMotion(true);
chaseCam.setMaxDistance(100000);
chaseCam.setMinVerticalRotation(-FastMath.PI / 2);
viewPort.setBackgroundColor(ColorRGBA.DarkGray);
Geometry tankGeom = (Geometry) tank.getChild(0);
LodControl control = new LodControl();
tankGeom.addControl(control);
rootNode.attachChild(tank);
Vector3f lightDir = new Vector3f(-0.8719428f, -0.46824604f, 0.14304268f);
DirectionalLight dl = new DirectionalLight();
dl.setColor(new ColorRGBA(1.0f, 0.92f, 0.75f, 1f));
dl.setDirection(lightDir);
Vector3f lightDir2 = new Vector3f(0.70518064f, 0.5902297f, -0.39287305f);
DirectionalLight dl2 = new DirectionalLight();
dl2.setColor(new ColorRGBA(0.7f, 0.85f, 1.0f, 1f));
dl2.setDirection(lightDir2);
rootNode.addLight(dl);
rootNode.addLight(dl2);
rootNode.attachChild(tank);
FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
BloomFilter bf = new BloomFilter(BloomFilter.GlowMode.Objects);
bf.setBloomIntensity(2.0f);
bf.setExposurePower(1.3f);
fpp.addFilter(bf);
BloomUI bui = new BloomUI(inputManager, bf);
viewPort.addProcessor(fpp);
}
示例7
@Override
protected Filter doCreateFilter(FilterPostProcessor parent, Object configuration) {
if (configuration != null) {
WizardDescriptor wiz = (WizardDescriptor) configuration;
if (wiz.getProperty("mode").equals("Scene")) {
return new BloomFilter(BloomFilter.GlowMode.Scene);
} else {
return new BloomFilter(BloomFilter.GlowMode.Objects);
}
}
return null;
}
示例8
@Override
public void simpleInitApp()
{
// put the camera in a bad position
cam.setLocation(new Vector3f(-2.336393f, 11.91392f, -10));
cam.setRotation(new Quaternion(0.23602544f, 0.11321983f, -0.027698677f, 0.96473104f));
// cam.setFrustumFar(1000);
Material mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
mat.setFloat("Shininess", 15f);
mat.setBoolean("UseMaterialColors", true);
mat.setColor("Ambient", ColorRGBA.Yellow.mult(0.2f));
mat.setColor("Diffuse", ColorRGBA.Yellow.mult(0.2f));
mat.setColor("Specular", ColorRGBA.Yellow.mult(0.8f));
mat.setColor("GlowColor", ColorRGBA.Green);
Material matSoil = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
matSoil.setFloat("Shininess", 15f);
matSoil.setBoolean("UseMaterialColors", true);
matSoil.setColor("Ambient", ColorRGBA.Gray);
matSoil.setColor("Diffuse", ColorRGBA.Black);
matSoil.setColor("Specular", ColorRGBA.Gray);
teapot = assetManager.loadModel("Models/Teapot/Teapot.obj");
teapot.setLocalTranslation(0, 0, 10);
teapot.setMaterial(mat);
teapot.setShadowMode(ShadowMode.CastAndReceive);
teapot.setLocalScale(10.0f);
rootNode.attachChild(teapot);
Vector3f boxMin1 = new Vector3f(-800f, -23f, -150f);
Vector3f boxMax1 = new Vector3f(800f, 3f, 1250f);
Box boxMesh1 = new Box(boxMin1, boxMax1);
Geometry soil = new Geometry("soil", boxMesh1);
soil.setMaterial(matSoil);
soil.setShadowMode(ShadowMode.CastAndReceive);
rootNode.attachChild(soil);
Material matBox = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
matBox.setTexture("ColorMap", assetManager.loadTexture("Textures/ColoredTex/Monkey.png"));
matBox.setFloat("AlphaDiscardThreshold", 0.5f);
Vector3f boxMin2 = new Vector3f(-5.5f, 8f, -4f);
Vector3f boxMax2 = new Vector3f(-1.5f, 12f, 0f);
Box boxMesh2 = new Box(boxMin2, boxMax2);
Geometry box = new Geometry("box", boxMesh2);
box.setMaterial(matBox);
box.setQueueBucket(RenderQueue.Bucket.Translucent);
// box.setShadowMode(ShadowMode.CastAndReceive);
rootNode.attachChild(box);
DirectionalLight light = new DirectionalLight();
light.setDirection(new Vector3f(-1, -1, -1).normalizeLocal());
light.setColor(ColorRGBA.White.mult(1.5f));
rootNode.addLight(light);
// load sky
Spatial sky = SkyFactory.createSky(assetManager,
"Textures/Sky/Bright/FullskiesBlueClear03.dds",
EnvMapType.CubeMap);
sky.setCullHint(Spatial.CullHint.Never);
rootNode.attachChild(sky);
fpp = new FilterPostProcessor(assetManager);
int numSamples = getContext().getSettings().getSamples();
if (numSamples > 0)
{
fpp.setNumSamples(numSamples);
}
BloomFilter bloom = new BloomFilter(GlowMode.Objects);
bloom.setDownSamplingFactor(2);
bloom.setBlurScale(1.37f);
bloom.setExposurePower(3.30f);
bloom.setExposureCutOff(0.2f);
bloom.setBloomIntensity(2.45f);
BloomUI ui = new BloomUI(inputManager, bloom);
viewPort.addProcessor(fpp);
fpp.addFilter(bloom);
initInputs();
}
示例9
public BloomUI(InputManager inputManager, final BloomFilter filter) {
System.out.println("----------------- Bloom UI Debugger --------------------");
System.out.println("-- blur Scale : press Y to increase, H to decrease");
System.out.println("-- exposure Power : press U to increase, J to decrease");
System.out.println("-- exposure CutOff : press I to increase, K to decrease");
System.out.println("-- bloom Intensity : press O to increase, P to decrease");
System.out.println("-------------------------------------------------------");
inputManager.addMapping("blurScaleUp", new KeyTrigger(KeyInput.KEY_Y));
inputManager.addMapping("blurScaleDown", new KeyTrigger(KeyInput.KEY_H));
inputManager.addMapping("exposurePowerUp", new KeyTrigger(KeyInput.KEY_U));
inputManager.addMapping("exposurePowerDown", new KeyTrigger(KeyInput.KEY_J));
inputManager.addMapping("exposureCutOffUp", new KeyTrigger(KeyInput.KEY_I));
inputManager.addMapping("exposureCutOffDown", new KeyTrigger(KeyInput.KEY_K));
inputManager.addMapping("bloomIntensityUp", new KeyTrigger(KeyInput.KEY_O));
inputManager.addMapping("bloomIntensityDown", new KeyTrigger(KeyInput.KEY_L));
AnalogListener anl = new AnalogListener() {
@Override
public void onAnalog(String name, float value, float tpf) {
if (name.equals("blurScaleUp")) {
filter.setBlurScale(filter.getBlurScale() + 0.01f);
System.out.println("blurScale : " + filter.getBlurScale());
}
if (name.equals("blurScaleDown")) {
filter.setBlurScale(filter.getBlurScale() - 0.01f);
System.out.println("blurScale : " + filter.getBlurScale());
}
if (name.equals("exposurePowerUp")) {
filter.setExposurePower(filter.getExposurePower() + 0.01f);
System.out.println("exposurePower : " + filter.getExposurePower());
}
if (name.equals("exposurePowerDown")) {
filter.setExposurePower(filter.getExposurePower() - 0.01f);
System.out.println("exposurePower : " + filter.getExposurePower());
}
if (name.equals("exposureCutOffUp")) {
filter.setExposureCutOff(Math.min(1.0f, Math.max(0.0f, filter.getExposureCutOff() + 0.001f)));
System.out.println("exposure CutOff : " + filter.getExposureCutOff());
}
if (name.equals("exposureCutOffDown")) {
filter.setExposureCutOff(Math.min(1.0f, Math.max(0.0f, filter.getExposureCutOff() - 0.001f)));
System.out.println("exposure CutOff : " + filter.getExposureCutOff());
}
if (name.equals("bloomIntensityUp")) {
filter.setBloomIntensity(filter.getBloomIntensity() + 0.01f);
System.out.println("bloom Intensity : " + filter.getBloomIntensity());
}
if (name.equals("bloomIntensityDown")) {
filter.setBloomIntensity(filter.getBloomIntensity() - 0.01f);
System.out.println("bloom Intensity : " + filter.getBloomIntensity());
}
}
};
inputManager.addListener(anl, "blurScaleUp", "blurScaleDown", "exposurePowerUp", "exposurePowerDown",
"exposureCutOffUp", "exposureCutOffDown", "bloomIntensityUp", "bloomIntensityDown");
}
示例10
@Override
public void simpleInitApp() {
// put the camera in a bad position
cam.setLocation(new Vector3f(-2.336393f, 11.91392f, -7.139601f));
cam.setRotation(new Quaternion(0.23602544f, 0.11321983f, -0.027698677f, 0.96473104f));
//cam.setFrustumFar(1000);
Material mat = new Material(assetManager,"Common/MatDefs/Light/Lighting.j3md");
mat.setFloat("Shininess", 15f);
mat.setBoolean("UseMaterialColors", true);
mat.setColor("Ambient", ColorRGBA.Yellow.mult(0.2f));
mat.setColor("Diffuse", ColorRGBA.Yellow.mult(0.2f));
mat.setColor("Specular", ColorRGBA.Yellow.mult(0.8f));
Material matSoil = new Material(assetManager,"Common/MatDefs/Light/Lighting.j3md");
matSoil.setFloat("Shininess", 15f);
matSoil.setBoolean("UseMaterialColors", true);
matSoil.setColor("Ambient", ColorRGBA.Gray);
matSoil.setColor("Diffuse", ColorRGBA.Black);
matSoil.setColor("Specular", ColorRGBA.Gray);
teapot = assetManager.loadModel("Models/Teapot/Teapot.obj");
teapot.setLocalTranslation(0,0,10);
teapot.setMaterial(mat);
teapot.setShadowMode(ShadowMode.CastAndReceive);
teapot.setLocalScale(10.0f);
rootNode.attachChild(teapot);
Geometry soil = new Geometry("soil", new Box(800, 10, 700));
soil.setLocalTranslation(0, -13, 550);
soil.setMaterial(matSoil);
soil.setShadowMode(ShadowMode.CastAndReceive);
rootNode.attachChild(soil);
DirectionalLight light=new DirectionalLight();
light.setDirection(new Vector3f(-1, -1, -1).normalizeLocal());
light.setColor(ColorRGBA.White.mult(1.5f));
rootNode.addLight(light);
// load sky
Spatial sky = SkyFactory.createSky(assetManager,
"Textures/Sky/Bright/FullskiesBlueClear03.dds",
EnvMapType.CubeMap);
sky.setCullHint(Spatial.CullHint.Never);
rootNode.attachChild(sky);
fpp=new FilterPostProcessor(assetManager);
// fpp.setNumSamples(4);
int numSamples = getContext().getSettings().getSamples();
if( numSamples > 0 ) {
fpp.setNumSamples(numSamples);
}
BloomFilter bloom=new BloomFilter();
bloom.setDownSamplingFactor(2);
bloom.setBlurScale(1.37f);
bloom.setExposurePower(3.30f);
bloom.setExposureCutOff(0.2f);
bloom.setBloomIntensity(2.45f);
BloomUI ui=new BloomUI(inputManager, bloom);
viewPort.addProcessor(fpp);
fpp.addFilter(bloom);
initInputs();
}
示例11
@Override
public void simpleInitApp() {
File file = new File("wildhouse.zip");
if (!file.exists()) {
useHttp = true;
}
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",
SkyFactory.EnvMapType.CubeMap));
// create the geometry and attach it
// load the level from zip or http zip
if (useHttp) {
assetManager.registerLocator(
"https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/jmonkeyengine/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() {
@Override
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));
}
示例12
private void setupFilter() {
FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
BloomFilter bloom = new BloomFilter(BloomFilter.GlowMode.Objects);
fpp.addFilter(bloom);
viewPort.addProcessor(fpp);
}
示例13
@Override
public void simpleInitApp() {
timer = new NanoTimer();
batchNode = new SimpleBatchNode("BatchNode");
xPosition.add(0);
yPosition.add(0);
zPosition.add(0);
mat1 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat1.setColor("Color", ColorRGBA.White);
mat1.setColor("GlowColor", ColorRGBA.Blue.mult(10));
mat2 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat2.setColor("Color", ColorRGBA.White);
mat2.setColor("GlowColor", ColorRGBA.Red.mult(10));
mat3 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat3.setColor("Color", ColorRGBA.White);
mat3.setColor("GlowColor", ColorRGBA.Yellow.mult(10));
mat4 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat4.setColor("Color", ColorRGBA.White);
mat4.setColor("GlowColor", ColorRGBA.Orange.mult(10));
randomGenerator();
//rootNode.attachChild(SkyFactory.createSky(
// assetManager, "Textures/SKY02.zip", false));
inputManager.addMapping("Start Game", new KeyTrigger(KeyInput.KEY_J));
inputManager.addListener(al, new String[]{"Start Game"});
cam.setLocation(new Vector3f(-34.403286f, 126.65158f, 434.791f));
cam.setRotation(new Quaternion(0.022630932f, 0.9749435f, -0.18736298f, 0.11776358f));
batchNode.batch();
terrain = new Node("terrain");
terrain.setLocalTranslation(50, 0, 50);
terrain.attachChild(batchNode);
flyCam.setMoveSpeed(100);
rootNode.attachChild(terrain);
Vector3f pos = new Vector3f(-40, 0, -40);
batchNode.setLocalTranslation(pos);
Arrow a = new Arrow(new Vector3f(0, 50, 0));
Geometry g = new Geometry("a", a);
g.setLocalTranslation(terrain.getLocalTranslation());
Material m = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
m.setColor("Color", ColorRGBA.Blue);
g.setMaterial(m);
FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
fpp.addFilter(new BloomFilter(BloomFilter.GlowMode.Objects));
// SSAOFilter ssao = new SSAOFilter(8.630104f,22.970434f,2.9299977f,0.2999997f);
// fpp.addFilter(ssao);
viewPort.addProcessor(fpp);
// viewPort.setBackgroundColor(ColorRGBA.DarkGray);
}
示例14
public BloomUI(InputManager inputManager, final BloomFilter filter) {
System.out.println("----------------- Bloom UI Debugger --------------------");
System.out.println("-- blur Scale : press Y to increase, H to decrease");
System.out.println("-- exposure Power : press U to increase, J to decrease");
System.out.println("-- exposure CutOff : press I to increase, K to decrease");
System.out.println("-- bloom Intensity : press O to increase, P to decrease");
System.out.println("-------------------------------------------------------");
inputManager.addMapping("blurScaleUp", new KeyTrigger(KeyInput.KEY_Y));
inputManager.addMapping("blurScaleDown", new KeyTrigger(KeyInput.KEY_H));
inputManager.addMapping("exposurePowerUp", new KeyTrigger(KeyInput.KEY_U));
inputManager.addMapping("exposurePowerDown", new KeyTrigger(KeyInput.KEY_J));
inputManager.addMapping("exposureCutOffUp", new KeyTrigger(KeyInput.KEY_I));
inputManager.addMapping("exposureCutOffDown", new KeyTrigger(KeyInput.KEY_K));
inputManager.addMapping("bloomIntensityUp", new KeyTrigger(KeyInput.KEY_O));
inputManager.addMapping("bloomIntensityDown", new KeyTrigger(KeyInput.KEY_L));
AnalogListener anl = new AnalogListener() {
public void onAnalog(String name, float value, float tpf) {
if (name.equals("blurScaleUp")) {
filter.setBlurScale(filter.getBlurScale() + 0.01f);
System.out.println("blurScale : " + filter.getBlurScale());
}
if (name.equals("blurScaleDown")) {
filter.setBlurScale(filter.getBlurScale() - 0.01f);
System.out.println("blurScale : " + filter.getBlurScale());
}
if (name.equals("exposurePowerUp")) {
filter.setExposurePower(filter.getExposurePower() + 0.01f);
System.out.println("exposurePower : " + filter.getExposurePower());
}
if (name.equals("exposurePowerDown")) {
filter.setExposurePower(filter.getExposurePower() - 0.01f);
System.out.println("exposurePower : " + filter.getExposurePower());
}
if (name.equals("exposureCutOffUp")) {
filter.setExposureCutOff(Math.min(1.0f, Math.max(0.0f, filter.getExposureCutOff() + 0.001f)));
System.out.println("exposure CutOff : " + filter.getExposureCutOff());
}
if (name.equals("exposureCutOffDown")) {
filter.setExposureCutOff(Math.min(1.0f, Math.max(0.0f, filter.getExposureCutOff() - 0.001f)));
System.out.println("exposure CutOff : " + filter.getExposureCutOff());
}
if (name.equals("bloomIntensityUp")) {
filter.setBloomIntensity(filter.getBloomIntensity() + 0.01f);
System.out.println("bloom Intensity : " + filter.getBloomIntensity());
}
if (name.equals("bloomIntensityDown")) {
filter.setBloomIntensity(filter.getBloomIntensity() - 0.01f);
System.out.println("bloom Intensity : " + filter.getBloomIntensity());
}
}
};
inputManager.addListener(anl, "blurScaleUp", "blurScaleDown", "exposurePowerUp", "exposurePowerDown",
"exposureCutOffUp", "exposureCutOffDown", "bloomIntensityUp", "bloomIntensityDown");
}
示例15
@Override
public void simpleInitApp() {
// put the camera in a bad position
cam.setLocation(new Vector3f(-2.336393f, 11.91392f, -7.139601f));
cam.setRotation(new Quaternion(0.23602544f, 0.11321983f, -0.027698677f, 0.96473104f));
//cam.setFrustumFar(1000);
Material mat = new Material(assetManager,"Common/MatDefs/Light/Lighting.j3md");
mat.setFloat("Shininess", 15f);
mat.setBoolean("UseMaterialColors", true);
mat.setColor("Ambient", ColorRGBA.Yellow.mult(0.2f));
mat.setColor("Diffuse", ColorRGBA.Yellow.mult(0.2f));
mat.setColor("Specular", ColorRGBA.Yellow.mult(0.8f));
Material matSoil = new Material(assetManager,"Common/MatDefs/Light/Lighting.j3md");
matSoil.setFloat("Shininess", 15f);
matSoil.setBoolean("UseMaterialColors", true);
matSoil.setColor("Ambient", ColorRGBA.Gray);
matSoil.setColor("Diffuse", ColorRGBA.Black);
matSoil.setColor("Specular", ColorRGBA.Gray);
teapot = assetManager.loadModel("Models/Teapot/Teapot.obj");
teapot.setLocalTranslation(0,0,10);
teapot.setMaterial(mat);
teapot.setShadowMode(ShadowMode.CastAndReceive);
teapot.setLocalScale(10.0f);
rootNode.attachChild(teapot);
Geometry soil=new Geometry("soil", new Box(new Vector3f(0, -13, 550), 800, 10, 700));
soil.setMaterial(matSoil);
soil.setShadowMode(ShadowMode.CastAndReceive);
rootNode.attachChild(soil);
DirectionalLight light=new DirectionalLight();
light.setDirection(new Vector3f(-1, -1, -1).normalizeLocal());
light.setColor(ColorRGBA.White.mult(1.5f));
rootNode.addLight(light);
// load sky
Spatial sky = SkyFactory.createSky(assetManager, "Textures/Sky/Bright/FullskiesBlueClear03.dds", false);
sky.setCullHint(Spatial.CullHint.Never);
rootNode.attachChild(sky);
fpp=new FilterPostProcessor(assetManager);
// fpp.setNumSamples(4);
BloomFilter bloom=new BloomFilter();
bloom.setDownSamplingFactor(2);
bloom.setBlurScale(1.37f);
bloom.setExposurePower(3.30f);
bloom.setExposureCutOff(0.2f);
bloom.setBloomIntensity(2.45f);
BloomUI ui=new BloomUI(inputManager, bloom);
viewPort.addProcessor(fpp);
fpp.addFilter(bloom);
initInputs();
}
示例16
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));
// create the geometry and attach it
// load the level from zip or http zip
if (useHttp) {
assetManager.registerLocator("http://jmonkeyengine.googlecode.com/files/wildhouse.zip", HttpZipLocator.class.getName());
} else {
assetManager.registerLocator("wildhouse.zip", ZipLocator.class.getName());
}
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));
}
示例17
private void setupFilter() {
FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
BloomFilter bloom = new BloomFilter(BloomFilter.GlowMode.Objects);
fpp.addFilter(bloom);
viewPort.addProcessor(fpp);
}
示例18
@Override
public void simpleInitApp() {
timer = new NanoTimer();
batchNode = new SimpleBatchNode("BatchNode");
xPosition.add(0);
yPosition.add(0);
zPosition.add(0);
mat1 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat1.setColor("Color", ColorRGBA.White);
mat1.setColor("GlowColor", ColorRGBA.Blue.mult(10));
mat2 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat2.setColor("Color", ColorRGBA.White);
mat2.setColor("GlowColor", ColorRGBA.Red.mult(10));
mat3 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat3.setColor("Color", ColorRGBA.White);
mat3.setColor("GlowColor", ColorRGBA.Yellow.mult(10));
mat4 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat4.setColor("Color", ColorRGBA.White);
mat4.setColor("GlowColor", ColorRGBA.Orange.mult(10));
randomGenerator();
//rootNode.attachChild(SkyFactory.createSky(
// assetManager, "Textures/SKY02.zip", false));
inputManager.addMapping("Start Game", new KeyTrigger(KeyInput.KEY_J));
inputManager.addListener(al, new String[]{"Start Game"});
cam.setLocation(new Vector3f(-34.403286f, 126.65158f, 434.791f));
cam.setRotation(new Quaternion(0.022630932f, 0.9749435f, -0.18736298f, 0.11776358f));
batchNode.batch();
terrain = new Node("terrain");
terrain.setLocalTranslation(50, 0, 50);
terrain.attachChild(batchNode);
flyCam.setMoveSpeed(100);
rootNode.attachChild(terrain);
Vector3f pos = new Vector3f(-40, 0, -40);
batchNode.setLocalTranslation(pos);
Arrow a = new Arrow(new Vector3f(0, 50, 0));
Geometry g = new Geometry("a", a);
g.setLocalTranslation(terrain.getLocalTranslation());
Material m = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
m.setColor("Color", ColorRGBA.Blue);
g.setMaterial(m);
FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
fpp.addFilter(new BloomFilter(BloomFilter.GlowMode.Objects));
// SSAOFilter ssao = new SSAOFilter(8.630104f,22.970434f,2.9299977f,0.2999997f);
// fpp.addFilter(ssao);
viewPort.addProcessor(fpp);
// viewPort.setBackgroundColor(ColorRGBA.DarkGray);
}
示例19
@Override
public void simpleInitApp() {
blue = new GeometryBatch("blue");
brown = new GeometryBatch("brown");
pink = new GeometryBatch("pink");
orange = new GeometryBatch("orange");
mat1 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat1.setColor("Color", ColorRGBA.White);
mat1.setColor("GlowColor", ColorRGBA.Blue.mult(10));
blue.setMaterial(mat1);
mat2 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat2.setColor("Color", ColorRGBA.White);
mat2.setColor("GlowColor", ColorRGBA.Red.mult(10));
brown.setMaterial(mat2);
mat3 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat3.setColor("Color", ColorRGBA.White);
mat3.setColor("GlowColor", ColorRGBA.Yellow.mult(10));
pink.setMaterial(mat3);
mat4 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat4.setColor("Color", ColorRGBA.White);
mat4.setColor("GlowColor", ColorRGBA.Orange.mult(10));
orange.setMaterial(mat4);
//rootNode.attachChild(SkyFactory.createSky(
// assetManager, "Textures/SKY02.zip", false));
inputManager.addMapping("Start Game", new KeyTrigger(KeyInput.KEY_J));
inputManager.addListener(al, new String[]{"Start Game"});
cam.setLocation(new Vector3f(-34.403286f, 126.65158f, 434.791f));
cam.setRotation(new Quaternion(0.022630932f, 0.9749435f, -0.18736298f, 0.11776358f));
//ChaseCamera c = new ChaseCamera();
//flyCam.setEnabled(false);
xPosition.add(0);
yPosition.add(0);
zPosition.add(0);
randomGenerator();
List<BatchedGeometry> l = blue.batch(blueList);
// for (Iterator<BatchedGeometry> it = l.iterator(); it.hasNext();) {
// BatchedGeometry batchedGeometry = it.next();
// batchedGeometry.addControl(new MyControl());
// }
l = brown.batch(brownList);
// for (Iterator<BatchedGeometry> it = l.iterator(); it.hasNext();) {
// BatchedGeometry batchedGeometry = it.next();
// batchedGeometry.addControl(new MyControl());
// }
l = pink.batch(pinkList);
// for (Iterator<BatchedGeometry> it = l.iterator(); it.hasNext();) {
// BatchedGeometry batchedGeometry = it.next();
// batchedGeometry.addControl(new MyControl());
// }
l = orange.batch(orangeList);
// for (Iterator<BatchedGeometry> it = l.iterator(); it.hasNext();) {
// BatchedGeometry batchedGeometry = it.next();
// batchedGeometry.addControl(new MyControl());
//
// }
// GeometryBatchFactory.optimize(terrain);
terrain = new Node("terrain");
terrain.setLocalTranslation(50, 0, 50);
terrain.attachChild(blue);
terrain.attachChild(brown);
terrain.attachChild(pink);
terrain.attachChild(orange);
flyCam.setMoveSpeed(100);
rootNode.attachChild(terrain);
Vector3f pos = new Vector3f(-40, 0, -40);
blue.setLocalTranslation(pos);
brown.setLocalTranslation(pos);
pink.setLocalTranslation(pos);
orange.setLocalTranslation(pos);
Arrow a = new Arrow(new Vector3f(0, 50, 0));
Geometry g = new Geometry("a", a);
g.setLocalTranslation(terrain.getLocalTranslation());
Material m = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
m.setColor("Color", ColorRGBA.Blue);
g.setMaterial(m);
// rootNode.attachChild(g);
FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
fpp.addFilter(new BloomFilter(BloomFilter.GlowMode.Objects));
// SSAOFilter ssao = new SSAOFilter(8.630104f,22.970434f,2.9299977f,0.2999997f);
// fpp.addFilter(ssao);
viewPort.addProcessor(fpp);
// viewPort.setBackgroundColor(ColorRGBA.DarkGray);
}
示例20
public JmeBloomFilter(BloomFilter filter, DataObject object, boolean readOnly) {
super(filter);
this.dataObject = object;
this.readOnly = readOnly;
}
示例21
@Override
public Class<?> getExplorerObjectClass() {
return BloomFilter.class;
}
示例22
@Override
public Node[] createNodes(Object key, DataObject dataObject, boolean readOnly) {
return new Node[]{new JmeBloomFilter((BloomFilter) key, dataObject, readOnly)};
}