Hi,
its my first time that I use terrainmonkey and I create a terrain with this tutorial
http://www.youtube.com/watch?v=zgPV3W6dD4s&feature=player_embedded#at=33
In main.java I added:
public void simpleInitApp() {
rootNode.attachChild(assetManager.loadModel(“Scenes/mymodel.j3o”););
}
But when I run it, it doesn’t work and closes in a second. Any idea what im doing wrong?
Thanks
do you have the error that it gave?
init:
Deleting: C:UsersmycomputernameDocumentsjMonkeyProjectsBasicGamebuildbuilt-jar.properties
deps-jar:
Updating property file: C:UsersmycomputernameDocumentsjMonkeyProjectsBasicGamebuildbuilt-jar.properties
compile:
run:
6-jul-2011 23:00:37 com.jme3.system.JmeSystem initialize
INFO: Running on jMonkey Engine 3 Alpha 0.6
6-jul-2011 23:00:37 com.jme3.system.Natives extractNativeLibs
INFO: Extraction Directory #1: file:/C:/Program%20Files/jmonkeyplatform/jmonkeyplatform/libs/
6-jul-2011 23:00:37 com.jme3.system.Natives extractNativeLibs
INFO: Extraction Directory #2: C:UsersmycomputernameDocumentsjMonkeyProjectsBasicGame
6-jul-2011 23:00:37 com.jme3.system.Natives extractNativeLibs
INFO: Extraction Directory #3: C:UsersmycomputernameDocumentsjMonkeyProjectsBasicGame
6-jul-2011 23:00:37 com.jme3.system.lwjgl.LwjglAbstractDisplay run
INFO: Using LWJGL 2.7.1
6-jul-2011 23:00:37 com.jme3.system.lwjgl.LwjglDisplay createContext
INFO: Selected display mode: 640 x 480 x 0 @0Hz
6-jul-2011 23:00:37 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: Display created.
6-jul-2011 23:00:37 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: Adapter: nvd3dum
6-jul-2011 23:00:38 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: Driver Version: 8.17.12.6724
6-jul-2011 23:00:38 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: Vendor: NVIDIA Corporation
6-jul-2011 23:00:38 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: OpenGL Version: 3.3.0
6-jul-2011 23:00:38 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: Renderer: GeForce 9800 GT/PCI/SSE2
6-jul-2011 23:00:38 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: GLSL Ver: 3.30 NVIDIA via Cg compiler
6-jul-2011 23:00:38 com.jme3.system.lwjgl.LwjglTimer
INFO: Timer resolution: 1000 ticks per second
6-jul-2011 23:00:38 com.jme3.renderer.lwjgl.LwjglRenderer initialize
INFO: Caps: [FrameBuffer, FrameBufferMRT, FrameBufferMultisample, TextureMultisample, OpenGL20, OpenGL21, OpenGL30, OpenGL31, OpenGL32, ARBprogram, GLSL100, GLSL110, GLSL120, GLSL130, GLSL140, GLSL150, VertexTextureFetch, TextureArray, TextureBuffer, FloatTexture, FloatColorBuffer, FloatDepthBuffer, PackedFloatTexture, SharedExponentTexture, PackedFloatColorBuffer, TextureCompressionLATC, MeshInstancing, VertexBufferArray]
6-jul-2011 23:00:38 com.jme3.asset.DesktopAssetManager
INFO: DesktopAssetManager created.
6-jul-2011 23:00:38 com.jme3.renderer.Camera
INFO: Camera created (W: 640, H: 480)
6-jul-2011 23:00:38 com.jme3.renderer.Camera
INFO: Camera created (W: 640, H: 480)
6-jul-2011 23:00:38 com.jme3.input.lwjgl.LwjglMouseInput initialize
INFO: Mouse created.
6-jul-2011 23:00:38 com.jme3.input.lwjgl.LwjglKeyInput initialize
INFO: Keyboard created.
6-jul-2011 23:00:38 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: AudioRenderer supports 64 channels
6-jul-2011 23:00:38 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio effect extension version: 1.0
6-jul-2011 23:00:38 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
INFO: Audio max auxilary sends: 1
6-jul-2011 23:00:38 com.jme3.material.MaterialDef
INFO: Loaded material definition: Unshaded
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Gui Node)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (BitmapFont) attached to this node (null)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (null) attached to this node (Statistics View)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (Statistics View) attached to this node (Gui Node)
6-jul-2011 23:00:38 com.jme3.material.MaterialDef
INFO: Loaded material definition: Terrain Lighting
6-jul-2011 23:00:38 com.jme3.asset.DesktopAssetManager loadAsset
WARNING: Cannot locate resource: com/jme3/gde/terraineditor/dirt.jpg (Flipped) (Mipmaped)
6-jul-2011 23:00:38 com.jme3.texture.Texture read
SEVERE: Could not load texture: com/jme3/gde/terraineditor/dirt.jpg (Flipped) (Mipmaped)
6-jul-2011 23:00:38 com.jme3.scene.Node attachChild
INFO: Child (New Scene) attached to this node (Root Node)
6-jul-2011 23:00:38 com.jme3.renderer.lwjgl.LwjglRenderer updateShaderSourceData
WARNING: Bad compile of:
#define ALPHAMAP 1
#define DIFFUSEMAP_0_SCALE 16.0625
#define WARDISO 1
uniform float m_Shininess;
varying vec4 AmbientSum;
varying vec4 DiffuseSum;
varying vec4 SpecularSum;
varying vec3 vNormal;
varying vec2 texCoord;
varying vec3 vPosition;
varying vec3 vnPosition;
varying vec3 vViewDir;
varying vec4 vLightDir;
varying vec4 vnLightDir;
#ifdef DIFFUSEMAP
uniform sampler2D m_DiffuseMap;
#endif
#ifdef DIFFUSEMAP_1
uniform sampler2D m_DiffuseMap_1;
#endif
#ifdef DIFFUSEMAP_2
uniform sampler2D m_DiffuseMap_2;
#endif
#ifdef DIFFUSEMAP_3
uniform sampler2D m_DiffuseMap_3;
#endif
#ifdef DIFFUSEMAP_0_SCALE
uniform float m_DiffuseMap_0_scale;
#endif
#ifdef DIFFUSEMAP_1_SCALE
uniform float m_DiffuseMap_1_scale;
#endif
#ifdef DIFFUSEMAP_2_SCALE
uniform float m_DiffuseMap_2_scale;
#endif
#ifdef DIFFUSEMAP_3_SCALE
uniform float m_DiffuseMap_3_scale;
#endif
#ifdef ALPHAMAP
uniform sampler2D m_AlphaMap;
#endif
#ifdef ALPHAMAP_1
uniform sampler2D m_AlphaMap_1;
#endif
#ifdef ALPHAMAP_2
uniform sampler2D m_AlphaMap_2;
#endif
#ifdef NORMALMAP
uniform sampler2D m_NormalMap;
#endif
#ifdef NORMALMAP_1
uniform sampler2D m_NormalMap_1;
#endif
#ifdef NORMALMAP_2
uniform sampler2D m_NormalMap_2;
#endif
#ifdef NORMALMAP_3
uniform sampler2D m_NormalMap_3;
#endif
#ifdef TRI_PLANAR_MAPPING
varying vec4 wVertex;
varying vec3 wNormal;
#endif
float tangDot(in vec3 v1, in vec3 v2){
float d = dot(v1,v2);
#ifdef V_TANGENT
d = 1.0 - dd;
return step(0.0, d) * sqrt(d);
#else
return d;
#endif
}
float lightComputeDiffuse(in vec3 norm, in vec3 lightdir, in vec3 viewdir){
return max(0.0, dot(norm, lightdir));
}
float lightComputeSpecular(in vec3 norm, in vec3 viewdir, in vec3 lightdir, in float shiny){
#ifdef WARDISO
// Isotropic Ward
vec3 halfVec = normalize(viewdir + lightdir);
float NdotH = max(0.001, tangDot(norm, halfVec));
float NdotV = max(0.001, tangDot(norm, viewdir));
float NdotL = max(0.001, tangDot(norm, lightdir));
float a = tan(acos(NdotH));
float p = max(shiny/128.0, 0.001);
return NdotL * (1.0 / (4.03.14159265pp)) * (exp(-(aa)/(pp)) / (sqrt(NdotV * NdotL)));
#else
// Standard Phong
vec3 R = reflect(-lightdir, norm);
return pow(max(tangDot(R, viewdir), 0.0), shiny);
#endif
}
vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 wvLightDir){
float diffuseFactor = lightComputeDiffuse(wvNorm, wvLightDir, wvViewDir);
float specularFactor = lightComputeSpecular(wvNorm, wvViewDir, wvLightDir, m_Shininess);
specularFactor *= step(1.0, m_Shininess);
float att = vLightDir.w;
return vec2(diffuseFactor, specularFactor) * vec2(att);
}
#ifdef ALPHAMAP
vec4 calculateDiffuseBlend(in vec2 texCoord) {
vec4 alphaBlend = texture2D( m_AlphaMap, texCoord.xy );
vec4 diffuseColor = texture2D(m_DiffuseMap, texCoord * m_DiffuseMap_0_scale);
diffuseColor *= alphaBlend.r;
#ifdef DIFFUSEMAP_1
vec4 diffuseColor1 = texture2D(m_DiffuseMap_1, texCoord * m_DiffuseMap_1_scale);
diffuseColor = mix( diffuseColor, diffuseColor1, alphaBlend.g );
#ifdef DIFFUSEMAP_2
vec4 diffuseColor2 = texture2D(m_DiffuseMap_2, texCoord * m_DiffuseMap_2_scale);
diffuseColor = mix( diffuseColor, diffuseColor2, alphaBlend.b );
#ifdef DIFFUSEMAP_3
vec4 diffuseColor3 = texture2D(m_DiffuseMap_3, texCoord * m_DiffuseMap_3_scale);
diffuseColor = mix( diffuseColor, diffuseColor3, alphaBlend.a );
#endif
#endif
#endif
return diffuseColor;
}
vec3 calculateNormal(in vec2 texCoord) {
vec3 normal = vec3(0,0,1);
vec4 normalHeight = vec4(0,0,0,0);
vec3 n = vec3(0,0,0);
vec4 alphaBlend = texture2D( m_AlphaMap, texCoord.xy );
#ifdef NORMALMAP
normalHeight = texture2D(m_NormalMap, texCoord * m_DiffuseMap_0_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend.r;
#endif
#ifdef NORMALMAP_1
normalHeight = texture2D(m_NormalMap_1, texCoord * m_DiffuseMap_1_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend.g;
#endif
#ifdef NORMALMAP_2
normalHeight = texture2D(m_NormalMap_2, texCoord * m_DiffuseMap_2_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend.b;
#endif
#ifdef NORMALMAP_3
normalHeight = texture2D(m_NormalMap_3, texCoord * m_DiffuseMap_3_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend.a;
#endif
return normalize(normal);
}
#ifdef TRI_PLANAR_MAPPING
vec4 getTriPlanarBlend(in vec4 coords, in vec3 blending, in sampler2D map, in float scale) {
vec4 col1 = texture2D( map, coords.yz * scale);
vec4 col2 = texture2D( map, coords.xz * scale);
vec4 col3 = texture2D( map, coords.xy * scale);
// blend the results of the 3 planar projections.
vec4 tex = col1 * blending.x + col2 * blending.y + col3 * blending.z;
return tex;
}
vec4 calculateTriPlanarDiffuseBlend(in vec3 wNorm, in vec4 wVert, in vec2 texCoord) {
// tri-planar texture bending factor for this fragment’s normal
vec3 blending = abs( wNorm );
blending = (blending -0.2) * 0.7;
blending = normalize(max(blending, 0.00001)); // Force weights to sum to 1.0 (very important!)
float b = (blending.x + blending.y + blending.z);
blending /= vec3(b, b, b);
// texture coords
vec4 coords = wVert;
// blend the results of the 3 planar projections.
vec4 tex0 = getTriPlanarBlend(coords, blending, m_DiffuseMap, m_DiffuseMap_0_scale);
#ifdef DIFFUSEMAP_1
// blend the results of the 3 planar projections.
vec4 tex1 = getTriPlanarBlend(coords, blending, m_DiffuseMap_1, m_DiffuseMap_1_scale);
#endif
#ifdef DIFFUSEMAP_2
// blend the results of the 3 planar projections.
vec4 tex2 = getTriPlanarBlend(coords, blending, m_DiffuseMap_2, m_DiffuseMap_2_scale);
#endif
#ifdef DIFFUSEMAP_3
// blend the results of the 3 planar projections.
vec4 tex3 = getTriPlanarBlend(coords, blending, m_DiffuseMap_3, m_DiffuseMap_3_scale);
#endif
vec4 alphaBlend = texture2D( m_AlphaMap, texCoord.xy );
vec4 diffuseColor = tex0 * alphaBlend.r;
#ifdef DIFFUSEMAP_1
diffuseColor = mix( diffuseColor, tex1, alphaBlend.g );
#ifdef DIFFUSEMAP_2
diffuseColor = mix( diffuseColor, tex2, alphaBlend.b );
#ifdef DIFFUSEMAP_3
diffuseColor = mix( diffuseColor, tex3, alphaBlend.a );
#endif
#endif
#endif
return diffuseColor;
}
vec3 calculateNormalTriPlanar(in vec3 wNorm, in vec4 wVert,in vec2 texCoord) {
// tri-planar texture bending factor for this fragment’s world-space normal
vec3 blending = abs( wNorm );
blending = (blending -0.2) * 0.7;
blending = normalize(max(blending, 0.00001)); // Force weights to sum to 1.0 (very important!)
float b = (blending.x + blending.y + blending.z);
blending /= vec3(b, b, b);
// texture coords
vec4 coords = wVert;
vec4 alphaBlend = texture2D( m_AlphaMap, texCoord.xy );
vec3 normal = vec3(0,0,1);
vec3 n = vec3(0,0,0);
vec4 normalHeight = vec4(0,0,0,0);
#ifdef NORMALMAP
normalHeight = getTriPlanarBlend(coords, blending, m_NormalMap, m_DiffuseMap_0_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend.r;
#endif
#ifdef NORMALMAP_1
normalHeight = getTriPlanarBlend(coords, blending, m_NormalMap_1, m_DiffuseMap_1_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend.g;
#endif
#ifdef NORMALMAP_2
normalHeight = getTriPlanarBlend(coords, blending, m_NormalMap_2, m_DiffuseMap_2_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend.b;
#endif
#ifdef NORMALMAP_3
normalHeight = getTriPlanarBlend(coords, blending, m_NormalMap_3, m_DiffuseMap_3_scale);
n = (normalHeight.xyz * vec3(2.0) - vec3(1.0));
n.z = sqrt(1.0 - (n.x * n.x) - (n.y * n.y));
n.y = -n.y;
normal += n * alphaBlend.a;
#endif
return normalize(normal);
}
#endif
#endif
void main(){
//
// diffuse calculations
//
#ifdef DIFFUSEMAP
#ifdef ALPHAMAP
#ifdef TRI_PLANAR_MAPPING
vec4 diffuseColor = calculateTriPlanarDiffuseBlend(wNormal, wVertex, texCoord);
#else
vec4 diffuseColor = calculateDiffuseBlend(texCoord);
#endif
#else
vec4 diffuseColor = texture2D(m_DiffuseMap, texCoord);
#endif
#else
vec4 diffuseColor = vec4(1.0);
#endif
//
// normal calculations
//
#if defined(NORMALMAP) || defined(NORMALMAP_1) || defined(NORMALMAP_2) || defined(NORMALMAP_3)
#ifdef TRI_PLANAR_MAPPING
vec3 normal = calculateNormalTriPlanar(wNormal, wVertex, texCoord);
#else
vec3 normal = calculateNormal(texCoord);
#endif
#else
vec3 normal = vNormal;
#endif
//
// lighting calculations
//
vec4 lightDir = vLightDir;
lightDir.xyz = normalize(lightDir.xyz);
vec2 light = computeLighting(vPosition, normal, vViewDir.xyz, lightDir.xyz);
vec4 specularColor = vec4(1.0);
//
// final color calculations
//
gl_FragColor = AmbientSum * diffuseColor +
DiffuseSum * diffuseColor * light.x +
SpecularSum * specularColor * light.y;
//gl_FragColor.a = alpha;
}
6-jul-2011 23:00:38 com.jme3.app.Application handleError
SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]
com.jme3.renderer.RendererException: compile error in:ShaderSource[name=Common/MatDefs/Terrain/TerrainLighting.frag, defines, type=Fragment] error:0(125) : error C1008: undefined variable "m_DiffuseMap"
I cannot quote it someway.
I tried alot and did exactly the same as in the video (its just a flat terrain and I didnt change anything).
It just gives that error.
That error is in the material. Meaning that some old version of the material is being used, or possibly that the texture cannot be found.
Did you create a project in the SDK? And is main application you are running able to find your assets directory?
When you create a new project in the SDK, you will want to use the main class that it generates, or at least a main class in that project so it can find the assets directory.
The problem is you are using the default texture
I updated JMP and im using the main, thats the place where I am initiating it.
But I dont get it why I couldnt find my assets directory… when I click on “edit terrain” its just there.
Edit: yes Im using default …
If the problem is that it can’t load the default texture, then something is wrong in how I have set it up.
I will have to test this out later today.
The thing is that the texture is in the TerrainEditor plugin, thus not in the game. Just replace the dirt texture with one from your assets folder.
So Normen I should place my own textures in there?
But I don’t have the textures that you used in your video. For example the basic grid that comes in handy.
Is there a place I could download this?
The default texture is embedded in the jme source code. I’ve copied it here for quick access: http://i.imgur.com/jL6cQ.jpg
I think I will have to have the default texture copied into the assets directory when you create a new project so this doesn’t happen to more people. Apologies.
No problem, Then could you tell me where it is located?
I can’t see it it and I would like to use the other ones too load the road. So I can search the myself and put them in the assets.
You can copy any of the example assets to your project by adding the “jme3 test data” library to your project, unfolding the library node and then Ctrl-C Ctrl-V -ing the assets to your project.
Just use the link I pasted there. That is the texture image. Place it in your Assets/Textures directory, then in the editor, select the texture and replace it with that one.
Jme doesn’t come with textures standard, those you need to make or buy yourself. Turbosquid.com has lots, many are free.