将光源添加到Sceneform节点没有效果。

8

我正在遵循谷歌开发者指南关于如何在SceneView中向一个节点添加光的说明:

https://developers.google.com/sceneform/develop/build-scene

Light spotLightYellow =
    Light.builder(this, Light.Type.FOCUSED_SPOTLIGHT)
        .setColor(new Color(android.graphics.Color.YELLOW))
        .setShadowCastingEnabled(true)
        .build();

然而,它似乎对我的渲染模型没有任何作用。

我还有其他遗漏的东西吗?

 ModelRenderable.builder()
                .setSource(
                        this,
                        Uri.parse(card)
                )
                .build()
                .thenAccept(
                        modelRenderable -> {

                            node.setParent(scene);
                            node.setLocalPosition(vector3);
                            node.setLocalScale(new Vector3(1.4f, 1.4f, 1.4f));
                            node.setName("Test");

                            Light light =
                                   Light.builder(Light.Type.FOCUSED_SPOTLIGHT)
                                   .setColor(new Color(android.graphics.Color.YELLOW))
                                   .setShadowCastingEnabled(true)
                                   .build();

                            node.setLight(light);

                            node.setRenderable(modelRenderable);


                        })
                .exceptionally(
                        throwable -> {
                            Toast toast =
                                    Toast.makeText(this, "Unable to load Fox renderable" + throwable, Toast.LENGTH_LONG);
                            toast.setGravity(Gravity.CENTER, 0, 0);
                            toast.show();
                            return null;
                        });

你的模型使用了什么材质?材质通常是“有光”或“无光”的,这意味着用于渲染模型的着色器在计算颜色时使用光信息。如果你的模型使用的材质不使用光照信息,则添加光源将没有任何影响。 - Clayton Wilkinson
我不确定材质是亮的还是暗的。在我的资产文件夹中,模型的 .sfb 文件没有名为 lit 或 unlit 的键。但我注意到,场景中的默认太阳节点会照亮我的 3D 模型,否则在 Android Studio 3D 查看器中它就很暗。我现在正在尝试添加一个额外的光节点(FOCUSED_SPOTLIGHT),但对渲染的模型没有影响。 - DIRTY DAVE
1
如果你还没有的话,可以访问 https://github.com/googlesamples/sceneform-samples。其中包含一个光照示例。虽然有点老,但我刚刚构建并成功运行了它。 - Clayton Wilkinson
1个回答

1

请确保DIRECTIONAL光的强度明显低于FOCUSED_SPOTLIGHT的强度。聚光灯的位置和方向很重要,但是定向光仅受方向控制(如其名称所示)。如果FOCUSED_SPOTLIGHT仍然无法正常工作,请尝试使用普通的SPOTLIGHT


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接