Sceneform:GLB 模型不投射阴影

发布于 2025-01-13 15:56:22 字数 2170 浏览 2 评论 0原文

我创建了一个 ViewRenderable 来位于我的 GLB 模型下方,但它似乎不会导致在 viewRenderable 上投射任何阴影。

我做错了什么?

class ShadowSelectionVisualizer : SelectionVisualizer {
        private val footprintNode: Node = Node()

        fun setFootprintRenderable(viewRenderable: ViewRenderable) {
            val copyRenderable = viewRenderable.makeCopy()
            copyRenderable.verticalAlignment = ViewRenderable.VerticalAlignment.CENTER
            val rotation1: Quaternion = Quaternion.axisAngle(Vector3(1.0f, 0.0f, 0.0f), 90f)
            footprintNode.renderable = copyRenderable
            footprintNode.localRotation = rotation1
        }

        override fun applySelectionVisual(node: BaseTransformableNode) {
            if (node.collisionShape is Box) {
                val box: Box = node.collisionShape as Box
                val vector3: Vector3 = box.size
                (footprintNode.renderable as ViewRenderable).sizer = ViewSizer {
                    val bound = if (vector3.x > vector3.z) vector3.x else vector3.z
                    Vector3(bound, bound, 0.0f)
                }
                footprintNode.setParent(node)
            }
        }

        override fun removeSelectionVisual(node: BaseTransformableNode?) {
            footprintNode.setParent(null)
        }
    }
myModelRenderable.isShadowCaster = true

val selectionVisualizer = ShadowSelectionVisualizer()
val transformationSystem = TransformationSystem(resources.displayMetrics, selectionVisualizer)

 ViewRenderable.builder()
            .setView(
                context, R.layout.shadow_receiver
            )
            .setRegistryId("someId.glb")
            .build()
            .thenAccept { viewRenderable: ViewRenderable ->
                viewRenderable.isShadowCaster = false
                viewRenderable.isShadowReceiver = true
                selectionVisualizer.setFootprintRenderable(viewRenderable)
            }

I created a ViewRenderable to go underneath my GLB model, but it doesn't seem to result in any shadow being cast on the viewRenderable.

What am I doing wrong?

class ShadowSelectionVisualizer : SelectionVisualizer {
        private val footprintNode: Node = Node()

        fun setFootprintRenderable(viewRenderable: ViewRenderable) {
            val copyRenderable = viewRenderable.makeCopy()
            copyRenderable.verticalAlignment = ViewRenderable.VerticalAlignment.CENTER
            val rotation1: Quaternion = Quaternion.axisAngle(Vector3(1.0f, 0.0f, 0.0f), 90f)
            footprintNode.renderable = copyRenderable
            footprintNode.localRotation = rotation1
        }

        override fun applySelectionVisual(node: BaseTransformableNode) {
            if (node.collisionShape is Box) {
                val box: Box = node.collisionShape as Box
                val vector3: Vector3 = box.size
                (footprintNode.renderable as ViewRenderable).sizer = ViewSizer {
                    val bound = if (vector3.x > vector3.z) vector3.x else vector3.z
                    Vector3(bound, bound, 0.0f)
                }
                footprintNode.setParent(node)
            }
        }

        override fun removeSelectionVisual(node: BaseTransformableNode?) {
            footprintNode.setParent(null)
        }
    }
myModelRenderable.isShadowCaster = true

val selectionVisualizer = ShadowSelectionVisualizer()
val transformationSystem = TransformationSystem(resources.displayMetrics, selectionVisualizer)

 ViewRenderable.builder()
            .setView(
                context, R.layout.shadow_receiver
            )
            .setRegistryId("someId.glb")
            .build()
            .thenAccept { viewRenderable: ViewRenderable ->
                viewRenderable.isShadowCaster = false
                viewRenderable.isShadowReceiver = true
                selectionVisualizer.setFootprintRenderable(viewRenderable)
            }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

假装爱人 2025-01-20 15:56:22
viewRenderable.isShadowCaster = false

将其设置为 true。更多信息请参见:https:// Developers.google.com/sceneform/reference/com/google/ar/sceneform/rendering/Renderable#isShadowCaster()

viewRenderable.isShadowCaster = false

Set this to true. More information here: https://developers.google.com/sceneform/reference/com/google/ar/sceneform/rendering/Renderable#isShadowCaster()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文