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

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?

主站蜘蛛池模板: 大冶市| 长沙市| 普宁市| 遂溪县| 保山市| 佛学| 宁晋县| 河东区| 钦州市| 连云港市| 吉安县| 行唐县| 仁布县| 福清市| 陆良县| 晋中市| 邳州市| 上思县| 镶黄旗| 玛纳斯县| 扶沟县| 牙克石市| 汝州市| 乌鲁木齐县| 石台县| 长沙市| 保康县| 宜川县| 阜新| 昌邑市| 凌云县| 余庆县| 桓台县| 永新县| 聂拉木县| 大姚县| 安丘市| 锦屏县| 塔城市| 伊金霍洛旗| 扬中市|