AndroidBenchmark (1.1) | 2011-09-26 14:01 |
AndroidSample_GoMyWay (1.0) | 2012-04-04 12:22 |
KinectJME (0.2) | 2012-01-16 19:12 |
lib-jar (2011-09-01) | 2011-09-01 15:18 |
locale_ja (1.0) | 2011-09-16 00:06 |
mikumikustudio (2011-09-02) | 2011-09-02 20:05 |
MMSAssetManagerForAndroid (0.21) | 2012-09-15 22:50 |
nativebullet (2011-10-15) | 2011-10-15 08:21 |
Samples (0.55) | 2011-09-03 01:23 |
前章で作成したサンプルは陰影が全く無いため全然3Dっぽくありません。これでは面白くないため、陰影を付けてみます。
ニコニコ動画 http://www.nicovideo.jp/watch/sm21769504
陰影に必要なのはライトの設定です。MikuMikuStudioでは
の4種類のライトがサポートされています。
ライトを使う前にマテリアルをUnshadedからLightingに変更する必要があります。以下の行を書き換えます。
val material = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md") material.setColor("Color", ColorRGBA.Blue)
val mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md") // マテリアルをLightingに変更 mat.setBoolean("UseMaterialColors", true) // 色指定を有効にする。 mat.setColor("Ambient", ColorRGBA.Red) // 環境光の色 mat.setColor("Diffuse", ColorRGBA.Red) // 拡散光の色
以下のコードをsimpleInitApp()に追加します。
val dl = new DirectionalLight() dl.setDirection(new Vector3f(1, 0, -5).normalizeLocal()) dl.setColor(ColorRGBA.White.mult(0.5f)) rootNode.addLight(dl)ここではDirectionalLightを設定しています。DirectionalLightは日光のように方向のあるライトです。
次に環境項を設定します。
先ほどはDirectionalLightのみを設定したため陰影がはっきりした画像になりました。次は環境光を設定してもう少し柔らかい表現にします。
以下のコードを追加します。
val al = new AmbientLight(); al.setColor(ColorRGBA.White.mult(0.5f)); rootNode.addLight(al);
package com.example.app import com.jme3.app.SimpleApplication import com.jme3.math.{ColorRGBA, Vector3f} import com.jme3.scene.Geometry import com.jme3.scene.shape.Box import com.jme3.material.Material import com.jme3.system.JmeSystem import projectkyoto.jme3.mmd.{CartoonEdgeProcessor, UpdateControl, PMDNode} import projectkyoto.mmd.file.VMDFile import projectkyoto.jme3.mmd.vmd.VMDControl import com.jme3.light.{PointLight, AmbientLight, DirectionalLight} class MainApp extends SimpleApplication { def simpleInitApp() { val dl = new DirectionalLight() dl.setDirection(new Vector3f(1, 0, -5).normalizeLocal()) dl.setColor(ColorRGBA.White.mult(0.5f)) rootNode.addLight(dl) val al = new AmbientLight(); al.setColor(ColorRGBA.White.mult(0.5f)); rootNode.addLight(al); val box = new Box(1,1,1) val geom = new Geometry("geom1", box) val mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md") // マテリアルをLightingに変更 mat.setBoolean("UseMaterialColors", true) // 色指定を有効にする。 mat.setColor("Ambient", ColorRGBA.Red) // 環境光の色 mat.setColor("Diffuse", ColorRGBA.Red) // 拡散光の色 geom.setMaterial(mat) rootNode.attachChild(geom) } }