【问题标题】:Expo Three.js OrbitControlsExpo Three.js OrbitControls
【发布时间】:2021-06-30 13:31:12
【问题描述】:

我正在尝试使用 expo 制作一个本机应用程序,我希望在其中拥有一个可以像地图一样平移和放大和缩小的飞机,我使用 Three 作为我的 3d 引擎,因为我确实需要它具有在 3d 空间中旋转的能力。我的应用程序中有一个 3d 立方体作为开始旋转。据我所知,这在使用 MapControls 或 Orbit 控件的浏览器中非常简单,但是在本机中,即使我直接从示例文件夹中导入脚本,我也无法让这些东西正常工作

export default function MapBuilder() {
    const onContextCreate = async gl => {
        const scene = new THREE.Scene()
        const camera = new THREE.PerspectiveCamera(
            75,
            gl.drawingBufferWidth / gl.drawingBufferHeight,
            0.1,
            1000
        )
        const renderer = new ExpoTHREE.Renderer({ gl })
        renderer.setSize(gl.drawingBufferWidth, gl.drawingBufferHeight)

        const geometry = new THREE.BoxGeometry(1, 1, 1)
        const material = new THREE.MeshNormalMaterial({ wireframe: true })
        const cube = new THREE.Mesh(geometry, material)
        scene.add(cube)

        const controls = OrbitControls(camera, renderer.domElement)

        camera.position.y = 0
        camera.position.x = 0
        camera.position.z = 5

        controls.update()

        const animate = () => {
            window.requestAnimationFrame(animate)
            cube.rotation.x += 0.02
            cube.rotation.y += 0.02
            renderer.render(scene, camera)
            controls.update()
            gl.endFrameEXP()
        }
        animate()
    }

    return (
        <GLView
            style={{ flex: 1, backgroundColor: 'black' }}
            onContextCreate={onContextCreate}
        />
    )
}

我相信问题可能出在 renderer.domElement 上,但我不知道用什么替换它。

感谢任何帮助。

【问题讨论】:

  • 可能相关:github.com/expo/expo-three/issues/147。也许在 github 上推送这个问题更有意义。
  • 看起来这是一个死问题,看起来我想自己做
  • 使问题被忽略了。在大多数情况下,解决现有问题实际上比创建重复问题更好。
  • 好的,我已经评论了

标签: react-native three.js expo


【解决方案1】:

我之前误解了这个问题
抱歉回答错误

我今天在 Expo 中使用 OrbitControls 时也遇到了问题, 并发现 expo-three-orbit-controls 对我来说很好
我用我的 iPhone 和 Android 模拟器测试过


尝试使用 ExpoGraphics.View 而不是 GLView

我已经成功地制作了一个地球仪,并通过使用 expo-three 和 expo graphics 在我的 iPhone 上运行它

您可以从这里检查源代码的核心: https://github.com/cryslub/history-expo/blob/master/ThreeScene.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-14
    • 2015-12-29
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    相关资源
    最近更新 更多