* Javadoc fix for AudioData, BoundingVolume, CollisionResult * Javadoc package.html for asset * Add test for bad tangent generation models git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8575 75d07b2b-3a1a-0410-a2c5-0572b91ccdca3.0
parent
6286ac495f
commit
0e49c439b7
@ -0,0 +1,37 @@ |
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
||||||
|
<html> |
||||||
|
|
||||||
|
<head> |
||||||
|
<title></title> |
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
|
||||||
|
<code>com.jme3.asset</code> contains the {@link com.jme3.asset.AssetManager}, |
||||||
|
a utility class that is used to load assets such as textures, models, and |
||||||
|
sound effects in a jME3 application. <br> |
||||||
|
|
||||||
|
<p> |
||||||
|
|
||||||
|
<h3>AssetLoaders</h3> |
||||||
|
{@link com.jme3.asset.AssetLoader asset loaders} are registered to load |
||||||
|
assets of a particular format. For example, an <code>AssetLoader</code> that |
||||||
|
loads TGA images should read a stream in .tga format and return an |
||||||
|
{@link com.jme3.texture.Image} object as its output. |
||||||
|
<code>AssetLoader</code>s are initialized once a file of that format |
||||||
|
is loaded, there's only one AssetLoader per thread so |
||||||
|
AssetLoader's load() method does not have to be thread safe. |
||||||
|
|
||||||
|
<h3>AssetLocators</h3> |
||||||
|
{@link com.jme3.asset.AssetLocators asset locators} are used to resolve |
||||||
|
an asset name (a string) into an {@link java.io.InputStream} which is |
||||||
|
contained in an {@link com.jme3.asset.AssetInfo} object. |
||||||
|
There are <code>AssetLocators</code> for loading files from the application's |
||||||
|
classpath, the local hard drive, a ZIP file, an HTTP server, and more. The user |
||||||
|
can implement their own AssetLocators and register them with the <code>AssetManager</code> |
||||||
|
to load their resources from their own location. |
||||||
|
|
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
||||||
|
|
@ -0,0 +1,103 @@ |
|||||||
|
package jme3test.light; |
||||||
|
|
||||||
|
import com.jme3.app.SimpleApplication; |
||||||
|
import com.jme3.asset.plugins.UrlLocator; |
||||||
|
import com.jme3.light.AmbientLight; |
||||||
|
import com.jme3.light.PointLight; |
||||||
|
import com.jme3.math.ColorRGBA; |
||||||
|
import com.jme3.math.FastMath; |
||||||
|
import com.jme3.math.Vector3f; |
||||||
|
import com.jme3.material.Material; |
||||||
|
import com.jme3.scene.Geometry; |
||||||
|
import com.jme3.scene.Spatial; |
||||||
|
import com.jme3.scene.shape.Sphere; |
||||||
|
import com.jme3.light.DirectionalLight; |
||||||
|
import com.jme3.scene.Mesh; |
||||||
|
import com.jme3.scene.SceneGraphVisitorAdapter; |
||||||
|
import com.jme3.util.TangentBinormalGenerator; |
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
* @author Kirusha |
||||||
|
*/ |
||||||
|
public class TestTangentGenBadModels extends SimpleApplication { |
||||||
|
|
||||||
|
float angle; |
||||||
|
PointLight pl; |
||||||
|
Geometry lightMdl; |
||||||
|
|
||||||
|
public static void main(String[] args){ |
||||||
|
TestTangentGenBadModels app = new TestTangentGenBadModels(); |
||||||
|
app.start(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void simpleInitApp() { |
||||||
|
assetManager.registerLocator("http://jme-glsl-shaders.googlecode.com/hg/assets/Models/LightBlow/", UrlLocator.class); |
||||||
|
assetManager.registerLocator("http://jmonkeyengine.googlecode.com/files/", UrlLocator.class); |
||||||
|
|
||||||
|
Spatial badModel = assetManager.loadModel("jme_lightblow.obj"); |
||||||
|
badModel.setLocalScale(2f); |
||||||
|
|
||||||
|
Material mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md"); |
||||||
|
mat.setTexture("NormalMap", assetManager.loadTexture("jme_lightblow_nor.png")); |
||||||
|
badModel.setMaterial(mat); |
||||||
|
rootNode.attachChild(badModel); |
||||||
|
|
||||||
|
// TODO: For some reason blender loader fails to load this.
|
||||||
|
// need to check it
|
||||||
|
// Spatial model = assetManager.loadModel("test.blend");
|
||||||
|
// rootNode.attachChild(model);
|
||||||
|
|
||||||
|
rootNode.depthFirstTraversal(new SceneGraphVisitorAdapter(){ |
||||||
|
@Override |
||||||
|
public void visit(Geometry g){ |
||||||
|
Mesh m = g.getMesh(); |
||||||
|
Material mat = g.getMaterial(); |
||||||
|
|
||||||
|
if (mat.getParam("DiffuseMap") != null){ |
||||||
|
mat.setTexture("DiffuseMap", null); |
||||||
|
} |
||||||
|
TangentBinormalGenerator.generate(m); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
// Geometry debug = new Geometry(
|
||||||
|
// "Debug Teapot",
|
||||||
|
// TangentBinormalGenerator.genTbnLines(((Geometry) badModel).getMesh(), 0.03f)
|
||||||
|
// );
|
||||||
|
// debug.getMesh().setLineWidth(3);
|
||||||
|
|
||||||
|
// Material debugMat = assetManager.loadMaterial("Common/Materials/VertexColor.j3m");
|
||||||
|
// debug.setMaterial(debugMat);
|
||||||
|
// debug.setCullHint(Spatial.CullHint.Never);
|
||||||
|
// debug.getLocalTranslation().set(badModel.getLocalTranslation());
|
||||||
|
// debug.getLocalScale().set(badModel.getLocalScale());
|
||||||
|
// rootNode.attachChild(debug);
|
||||||
|
|
||||||
|
DirectionalLight dl = new DirectionalLight(); |
||||||
|
dl.setDirection(new Vector3f(-0.8f, -0.6f, -0.08f).normalizeLocal()); |
||||||
|
dl.setColor(new ColorRGBA(1,1,1,1)); |
||||||
|
rootNode.addLight(dl); |
||||||
|
|
||||||
|
lightMdl = new Geometry("Light", new Sphere(10, 10, 0.1f)); |
||||||
|
lightMdl.setMaterial(assetManager.loadMaterial("Common/Materials/RedColor.j3m")); |
||||||
|
lightMdl.getMesh().setStatic(); |
||||||
|
rootNode.attachChild(lightMdl); |
||||||
|
|
||||||
|
pl = new PointLight(); |
||||||
|
pl.setColor(ColorRGBA.White); |
||||||
|
// rootNode.addLight(pl);
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void simpleUpdate(float tpf){ |
||||||
|
angle += tpf; |
||||||
|
angle %= FastMath.TWO_PI; |
||||||
|
|
||||||
|
pl.setPosition(new Vector3f(FastMath.cos(angle) * 2f, 2f, FastMath.sin(angle) * 2f)); |
||||||
|
lightMdl.setLocalTranslation(pl.getPosition()); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue