快速入门

创建项目

打开eclipse,选择创建一个maven工程。

1.png

2.png

3.png

使用maven导入包

	<properties>
		<jme3_v>3.5.1-stable</jme3_v>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-core</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-desktop</artifactId>
			<version>${jme3_v}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-lwjgl</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<!--
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-lwjgl3</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		-->
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-effects</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-networking</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-plugins</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-jogg</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-terrain</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-blender</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<!--
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-jbullet</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		-->
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-bullet</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-bullet-native </artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-niftygui</artifactId>
			<version>${jme3_v}</version>
		</dependency>
		<dependency>
			<groupId>org.jmonkeyengine</groupId>
			<artifactId>jme3-jogl</artifactId>
			<version>${jme3_v}</version>
		</dependency>
	</dependencies>

安卓中使用Gradle导入项目

如果使用的是gradle构建项目的话(比如安卓),则如下:

repositories {
    mavenCentral()
}

dependencies {
		def jme3version = '3.5.1-stable'

    implementation "org.jmonkeyengine:jme3-core:${jme3version}"
    implementation "org.jmonkeyengine:jme3-effects:${jme3version}"
    implementation "org.jmonkeyengine:jme3-networking:${jme3version}"
    implementation "org.jmonkeyengine:jme3-plugins:${jme3version}"
    implementation "org.jmonkeyengine:jme3-jogg:${jme3version}"
    implementation "org.jmonkeyengine:jme3-terrain:${jme3version}"
    implementation "org.jmonkeyengine:jme3-bullet:${jme3version}"
    implementation "org.jmonkeyengine:jme3-bullet-native-android:${jme3version}"
    implementation "org.jmonkeyengine:jme3-niftygui:${jme3version}"
    implementation "org.jmonkeyengine:jme3-android:${jme3version}"
    implementation "org.jmonkeyengine:jme3-android-native:${jme3version}"
}

创建HelloSimpleAplication

5.png

写入如下代码运行:

import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;

public class HelloSimpleApplication extends SimpleApplication {

    public static void main(String[] args){
    	HelloSimpleApplication app = new HelloSimpleApplication();
        app.start(); //启动游戏
    }

    @Override
    public void simpleInitApp() {
    	// 创建一个立方体
        Box b = new Box(1, 1, 1);
        
        // 根据形状创建立方体几何体
        Geometry geom = new Geometry("Box", b); 
        
        // 创建一个材质(这个材质是JME3自带的)
        Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
        mat.setColor("Color", ColorRGBA.Blue);   // 将材料的颜色设置为Blue
        geom.setMaterial(mat);                   // 将立方体的材质设置为所创建的材质
        rootNode.attachChild(geom);              //将立方体挂载到rootNode中
    }
}

运行效果

在运行会弹出下面的框,需要设置一些启动参数:

image.png

  • Fullscreen?: 是否全屏
  • Screen Resolution: 窗口分辨率
  • Refresh Rate: 刷新率
  • Vsync?: 是否开启垂直同步
  • Gamma correction: 伽玛校正
  • Color Depth: 色深
  • Anti-Aliasing: 抗锯齿

6.png

SimpleApplication默认自带了一些操作:

  • 按ESC可以退出程序。
  • 按WSAD键可以让摄像机前后左右运动
  • 按QZ键可以上下移动
  • 摆动鼠标可以调整摄像机的角度
  • 滑动鼠标滚轮可以调整摄像机的焦距
  • 按C键可以显示摄像机当前的位置和旋转姿态(控制台打印)
  • 按M键可以查看内存的使用情况(控制台打印)

在程序启动时设置BufferUtils.setTrackDirectMemoryEnabled(true),还可以查看通过底层分配的直接内存。

Android

Android项目和Java项目有一点点区别,你没有办法从main方法启动程序,需要使用com.jme3.app.AndroidHarness这个类。让MainActivity继承AndroidHarness,然后在构造方法中将appClass的值改为我们刚才写的那个类,注意要写类的全名。

import com.jme3.app.AndroidHarness;

public class MainActivity extends AndrdoidHarness {
    public MainActivity() {
        this.appClass = "net.jmecn.HelloJME3";
    }
}

如果你不希望jME3的画面占据整个Activity窗口,还可以使用com.jme3.app.AndroidHarnessFragment,这与AndroidHarness的使用并没有太大区别。

import com.jme3.app.AndroidHarnessFragment;

public class MyFragment extends AndroidHarnessFragment {
    public MyFragment() {
        this.appClass = "net.jmecn.HelloJME3";
    }
}