0

私は awayd3D を使い始めましたが、バージョン 4.0 ベータ版で解決策が見つかりませんでした。あなたに訴えることができます。

ライトの使用についての説明を見つけたいと思ってインターネットで多くの調査を行いましたが、各バージョン 3 に関連する説明はほとんどありません。

このシーンを実感(http://goupix.com/test/)。WASDキーまたは矢印キーを使用して移動できます。

このシーンを実現するために、いくつかのファイルがあります。 Exploration.as: シーン、カメラ、およびライトを作成します。ライト:

PointLight light = new ();
light.x = -2000;
light.y = 1000;
light.z = -1000;
light.color 0xffeeaa = / / Here, select the new color of the light source
view.scene.addChild (light);

ClassGeneratemap.as: 装飾用に生成されたテーブルを使用します ClassGenerateobjet.as: ClassGeneratemap によって呼び出され、要素をシーンに配置します

public function onAssetComplete(event:AssetEvent):void {
    if ( event.asset.assetType == AssetType.MESH && event.asset.assetNamespace == token ) {
        AssetLibrary.removeEventListener(AssetEvent.ASSET_COMPLETE, onAssetComplete);               
        trace("position : " + posX + " : " + posY );
        mesh = event.asset as Mesh;
        mesh.geometry.scale(1);
        mesh.x = -posX * instData.scale;
        mesh.z = posY * instData.scale;
        mesh.castsShadows = true ;
        //trace("position : " + mesh.x + " : " + mesh.z );
        instExploration.scene.addChild( mesh );
    }//End If
}//End onAssetComplete

置いたライトの使い方が本当にわかりません。本当にこれが正しい種類の光かどうかはわかりません。

あなたが私を助けてくれることを願っています。ありがとうございました

4

1 に答える 1

0

Away3d の GitHub からサンプルを引っ張ってくると役に立ちます。

https://github.com/away3d/away3d-examples-fp11

    /**
     * Initialize the lights
     */
    private function initLights():void
    {
        moonLight = new DirectionalLight();
        moonLight.position = new Vector3D(3500, 4500, 10000); // Appear to come from the moon in the sky box.
        moonLight.lookAt(new Vector3D(0, 0, 0));
        moonLight.diffuse = 0.5;
        moonLight.specular = 0.25;
        moonLight.color = 0xFFFFFF;
        scene.addChild(moonLight);

        cameraLight = new PointLight();
        cameraLight.diffuse = 0.25;
        cameraLight.specular = 0.25;
        cameraLight.color = 0xFFFFFF;
        cameraLight.radius = 1000;
        cameraLight.fallOff = 2000;
        scene.addChild(cameraLight);

        skyLight = new DirectionalLight();
        skyLight.diffuse = 0.1;
        skyLight.specular = 0.1;
        skyLight.color = 0xFFFFFF;
        scene.addChild(skyLight);

        lightPicker = new StaticLightPicker([moonLight, cameraLight, skyLight]);

        //create a global fog method
        fogMethod = new FogMethod(0, 200000, 0x000000);
    }

    private function createTreeShadow(x:Number, z:Number):void
    {
        // Paint on the terrain's shadow blend layer
        var matrix:Matrix = new Matrix();
        var dx:Number = (x/terrainWidth + 0.5)*512 - 8;
        var dy:Number = (-z/terrainDepth + 0.5)*512 - 8;
        matrix.translate(dx, dy);
        var treeShadowBitmapData = new BitmapData(16, 16, false, 0x0000FF);
        treeShadowBitmapData.draw(createGradientSprite(16, 16, 0, 1), matrix);
        blendBitmapData.draw(treeShadowBitmapData, matrix, null, BlendMode.ADD);

        // Update the terrain.
        blendTexture.bitmapData = blendBitmapData; // TODO: invalidation routine not active for blending texture
    }

    /**
     * Initialize the material
     */
    private function initMaterials():void
    {
        //create skybox texture
        cubeTexture = new BitmapCubeTexture(new EnvPosX().bitmapData, new EnvNegX().bitmapData, new EnvPosY().bitmapData, new EnvNegY().bitmapData, new EnvPosZ().bitmapData, new EnvNegZ().bitmapData);

        //create tree material
        trunkMaterial = new TextureMaterial(new BitmapTexture(new TrunkDiffuse().bitmapData));
        trunkMaterial.normalMap = new BitmapTexture(new TrunkNormals().bitmapData);
        trunkMaterial.specularMap = new BitmapTexture(new TrunkSpecular().bitmapData);
        trunkMaterial.diffuseMethod = new BasicDiffuseMethod();
        trunkMaterial.specularMethod = new BasicSpecularMethod();
        trunkMaterial.addMethod(fogMethod);
        trunkMaterial.lightPicker = lightPicker;

        //create leaf material
        leafMaterial = new TextureMaterial(new BitmapTexture(new LeafDiffuse().bitmapData));
        leafMaterial.addMethod(fogMethod);
        leafMaterial.lightPicker = lightPicker;

        //create height map
        heightMapData = new BitmapData(512, 512, false, 0x0);
        heightMapData.perlinNoise(200, 200, 4, uint(1000*Math.random()), false, true, 7, true);
        heightMapData.draw(createGradientSprite(512, 512, 1, 0));

        //create terrain diffuse method
        blendBitmapData = heightMapData.clone();
        blendBitmapData.threshold(blendBitmapData, blendBitmapData.rect, destPoint, ">", 0x444444, 0xFF00FF00, 0xFFFFFF, true);
        blendBitmapData.colorTransform(blendBitmapData.rect, new ColorTransform(1, 1, 1, 1, 255, 0, 0, 0));
        blendBitmapData.applyFilter(blendBitmapData, blendBitmapData.rect, destPoint, new BlurFilter(16, 16, 3));
        blendTexture = new BitmapTexture(blendBitmapData);
        terrainMethod = new TerrainDiffuseMethod([new BitmapTexture(new Grass().bitmapData), new BitmapTexture(new Rock().bitmapData), new BitmapTexture(new BitmapData(512, 512, false, 0x000000))], blendTexture, [1, 20, 20, 1]);

        //create terrain material
        terrainMaterial = new TextureMaterial(new BitmapTexture(heightMapData));
        terrainMaterial.diffuseMethod = terrainMethod;
        terrainMaterial.addMethod(new FogMethod(0, 200000, 0x000000)); //TODO: global fog method affects splats when updated
        terrainMaterial.lightPicker = lightPicker;
    }
于 2012-05-20T01:50:50.447 に答える