- jMonkeyEngine 3.0 Beginner’s Guide
- Ruth Kusterer
- 327字
- 2021-08-13 17:02:07
Time for action – position it!
To practice positioning objects, we create a second cube and place it next to the first one. Open the BasicGame
template and look at the simpleInitApp()
method.
- Create a
com.jme3.math.Vector3f
object. This is the target location for the second cube:Vector3f v = new Vector3f(2.0f , 1.0f , -3.0f);
- Copy the code snippet that creates the blue cube and adjust it to create a second, yellow cube.
- Name the
new Box
objectb2
, the geometrygeom2
, and the materialmat2
. (Make sure to rename all instances!) - Change the
Color
parameter in the materialmat2
toColorRGBA.Yellow
. - Move the second box to its new location
v
:geom2.setLocalTranslation(v);
- Attach
geom2
to therootNode
to add it to the scene. - Clean and build the
BasicGame
template, and right-click the class to run this file.
You should see a yellow cube behind the blue cube, but positioned a bit higher (y=1), a bit to the right (x=2), and further in the back (z=-3).
What just happened?
Positioning an object, such as our cubes in the 3D scene, is called translation. You create geometries at the origin, then translate them to their intended position, and then attach them to the rootNode
.
Tip
Typically, you never create Box()
objects and so on with an offset in the constructor. The offset will just get you into trouble later when the geometry does not move as expected. Always start at the origin, as in Box b = new Box(Vector3f.ZERO, 1, 1, 1);
.
In Java, you can choose between two methods when you position objects:

If you start out with both boxes at the origin, both methods result in the same target location. If you use the move()
method several times, the offsets add up. If you use the setLocalTranslation()
method several times, you simply place the cube at a new absolute location. Try these methods several times on each cube, with different values, and try to predict what happens.
- Flink SQL與DataStream入門、進階與實戰
- TestNG Beginner's Guide
- FLL+WRO樂高機器人競賽教程:機械、巡線與PID
- TypeScript項目開發實戰
- Swift語言實戰精講
- C#實踐教程(第2版)
- 西門子S7-200 SMART PLC編程從入門到實踐
- Natural Language Processing with Java and LingPipe Cookbook
- Programming with CodeIgniterMVC
- SEO教程:搜索引擎優化入門與進階(第3版)
- Selenium WebDriver Practical Guide
- Mastering PowerCLI
- WordPress Search Engine Optimization(Second Edition)
- 虛擬現實建模與編程(SketchUp+OSG開發技術)
- INSTANT LESS CSS Preprocessor How-to