官术网_书友最值得收藏!

Time for action – scale it!

Your freshly loaded fighter model appears as tall as the tavern next to it, while the dragon turns out to be as small as a lizard—what happened? It's possible that geometries do not come in the same scale; especially when you populate the scene with models from different sources, you have to resize them to fit the scene.

Resizing geometries is called scaling. Let's scale our translated cubes by adding the following to the simpleInitApp() method:

  1. Shrink the blue cube down to half its size: geom.setLocalScale(0.5f);.
  2. Grow the yellow cube to twice its size: geom2.scale(2.0f);.
  3. Clean and build the BasicGame template, and right-click on it to run the file.

Compare the outcome. The yellow cube is twice as big (2.0f) and the blue cube is half as big (0.5f) as before.

What happens if you supply three different floats (positive and larger than zero) as arguments instead, and run the file again? For example:

geom.setLocalScale(0.5f,3f,0.75f);
geom2.scale(2.0f,.33f,2.0f);

Try various values and see what happens. Can you distort the blue cube to be thin and tall, and the yellow cube to be wide and short?

What just happened?

Just like translation, there are two Java methods—one for absolute and one for relative scaling:

There are also scale(x,y,z) and setLocalScale(x,y,z) methods that accept three float arguments instead of just one.

The x value controls the width, from the left to the right. The y value controls the height, from up to down. The z value controls the depth, towards you and away from you. Does this (x,y,z) pattern look familiar?

主站蜘蛛池模板: 兖州市| 鞍山市| 泗水县| 金塔县| 武陟县| 和龙市| 江山市| 宁国市| 尤溪县| 沁水县| 普兰县| 儋州市| 肃北| 临漳县| 天祝| 洪江市| 进贤县| 甘肃省| 绥棱县| 巩留县| 蓝山县| 巴里| 马鞍山市| 永寿县| 鹿泉市| 增城市| 化州市| 鸡泽县| 四子王旗| 卓资县| 邛崃市| 玉环县| 德兴市| 东源县| 高尔夫| 鄂温| 镇康县| 沙田区| 达日县| 阿图什市| 正镶白旗|