【问题标题】:How to make objects receive shadow in away3d如何使对象在away3d中接收阴影
【发布时间】:2012-09-27 09:22:08
【问题描述】:

我对 away3d 还很陌生。将带有阴影对象的基本场景组合在一起后,我想知道为什么它们不相互叠加阴影?

在我的示例中,平面上方有一个立方体,两者上方都有定向光。如何让立方体在它下面的平面上投下阴影?

示例是使用 away 3d 3.6 编写的

package  {

import flash.display.MovieClip;
import flash.events.*;
import away3d.containers.View3D;
import away3d.primitives.Cube;
import away3d.primitives.Plane;
import away3d.lights.DirectionalLight3D;
import away3d.materials.PhongColorMaterial;
import away3d.materials.ColorMaterial;
import flash.geom.Vector3D;


public class Test7 extends MovieClip {

    public var view:View3D;
    public var light:DirectionalLight3D;

    public var cube:Cube;
    public var plane:Plane;     

    public function Test7() {
        // constructor code
        view = new View3D();
        view.x = 200;
        view.y = 200;
        view.z = 150;

        light = new DirectionalLight3D();
        light.direction = new Vector3D(0, -1, 0);
        light.brightness = 5;
        view.scene.addLight(light);

        plane = new Plane();
        plane.material = new PhongColorMaterial(0xCCCCCC);
        plane.width = 1000;
        plane.height = 1000;
        plane.segmentsH = 
        plane.segmentsW = 10;
        plane.y = -100;
        view.scene.addChild(plane);

        cube = new Cube();
        cube.rotationX = 45;
        cube.rotationY = 45;
        cube.segmentsD = 
        cube.segmentsH = 
        cube.segmentsW = 10;
        cube.material = new PhongColorMaterial(0x330099);
        view.scene.addChild(cube);

        addChild(view);
        addEventListener(Event.ENTER_FRAME, render);            
    }

    public function render(e:Event):void {
        view.render();
    }
}

}

【问题讨论】:

    标签: flash 3d flash-cs5 away3d


    【解决方案1】:

    实时计算阴影对 CPU 来说过于繁重,因此需要 GPU (Away 3D 4.0+) 您应该使用图形编辑器将阴影、漫反射照明、全局照明、环境光遮挡等烘焙到纹理。这将为您提供超高质量的静态照明,因为全局照明的预先计算可能需要大量时间,而不是实时的 1\30 秒。使场景更加动态您可以将环境立方体贴图添加到模型或原始照明。

    这是带有预计算阴影的演示: http://alternativaplatform.com/ru/demos/temple/ 而这个带有环境图的: http://alternativaplatform.com/swf/demos/mobilephone/mobilephone.swf

    【讨论】:

    • 嘿,感谢您的澄清。所以 away 3d 4.0 使用 flash player 11,只有 flash player 11 使用 gpu,对吗?我投射阴影的对象是动态加载并在场景中移动的,因此烘焙阴影不是一种选择。也许我毕竟不得不用掉 3d 4.0 或者把这个功能排除在外:)
    【解决方案2】:

    【讨论】:

    • 你知道away3d 3.6相当于这个吗?
    • 是的,这似乎是 4.0 代码。对于 3.6,SimpleShadow 似乎是您正在寻找的。看看这个链接groups.google.com/forum/?fromgroups=#!topic/away3d-dev/…(Fabrice 的第一条消息)
    • SimpleShadow 似乎在物体下方产生了一个简单的阴影“斑点”,但从一些快速测试来看,这并不是由灯光投射的真实计算阴影。我觉得我的设置中缺少一些标志或类似的东西来告诉对象接收阴影。
    猜你喜欢
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 2021-10-06
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多