public HemisphereLight clone() { HemisphereLight light = new HemisphereLight(0x000000, 0x000000); super.clone(light); light.groundColor.copy(this.groundColor); light.intensity = this.intensity; return light; }
@Override public void onStart(RenderingContext context) { scene = new Scene(); camera = new PerspectiveCamera( 40, // fov context.getRenderer().getAbsoluteAspectRation(), // aspect 1, // near 10000 // far ); camera.getPosition().set(700, 180, -500); scene.setFog(new Fog(0xfafafa, 1000, 10000)); // CONTROLS // controls = new TrackballControls( camera, getCanvas() ); // controls.getTarget().setZ( 150 ); // LIGHTS DirectionalLight directionalLight = new DirectionalLight(0xffffff, 1.475); directionalLight.getPosition().set(100, 100, -100); scene.add(directionalLight); HemisphereLight hemiLight = new HemisphereLight(0xffffff, 0xffffff, 1.25); hemiLight.getColor().setHSL(0.6, 1.0, 0.75); hemiLight.getGroundColor().setHSL(0.1, 0.8, 0.7); hemiLight.getPosition().setY(500); scene.add(hemiLight); // SKYDOME ShaderMaterial skyMat = new ShaderMaterial(Resources.INSTANCE).setSide(Material.SIDE.BACK); skyMat.getShader().addUniform("topColor", new Uniform(Uniform.TYPE.C, new Color(0x0077ff))); skyMat.getShader().addUniform("bottomColor", new Uniform(Uniform.TYPE.C, new Color(0xffffff))); skyMat .getShader() .addUniform("topColor", new Uniform(Uniform.TYPE.C, hemiLight.getColor().clone())); skyMat.getShader().addUniform("offset", new Uniform(Uniform.TYPE.F, 400.0)); skyMat.getShader().addUniform("exponent", new Uniform(Uniform.TYPE.F, 0.6)); scene .getFog() .setColor(((Color) skyMat.getShader().getUniforms().get("bottomColor").getValue()).clone()); SphereGeometry skyGeo = new SphereGeometry(4000, 32, 15); Mesh sky = new Mesh(skyGeo, skyMat); scene.add(sky); // RENDERER context.getRenderer().setClearColor(scene.getFog().getColor(), 1); context.getRenderer().setGammaInput(true); context.getRenderer().setGammaOutput(true); // MODEL // new JsonLoader(model, new XHRLoader.ModelLoadHandler() { // // @Override // public void onModelLoaded(XHRLoader loader, AbstractGeometry geometry) { // Mesh mesh = new Mesh( geometry, new MeshFaceMaterial(((JsonLoader)loader).getMaterials()) // ); // mesh.getPosition().set( 0 ); // mesh.getScale().set( 100 ); // scene.add( mesh ); // } // }); }