gpt4 book ai didi

typescript - 在 react 三纤维中四处移动正交相机

转载 作者:行者123 更新时间:2023-12-04 15:36:00 24 4
gpt4 key购买 nike

我在尝试修改 react-three-fiber 中的正交相机时遇到问题。

基本上,我是这样在 Canvas 中设置相机的:

<Canvas
invalidateFrameloop
orthographic
camera={{
position: this.state.position,
left: this.state.frustum[0],
right: this.state.frustum[1],
bottom: this.state.frustum[2],
top: this.state.frustum[3]
}} >
<TreemapContainer ... zoomStuff={this.zoomStuff} />
</ Canvas

现在,zoomStuff 应该在执行某些操作时移动和更新相机信息(基本上它应该更新视锥体和周围的位置)

  private zoomStuff = (camera: OrthographicCamera, position: number[], frustum: number[]) => {
this.setState(prevState => { return { ...prevState, position, frustum } })
camera.position.set(position[0], position[1], position[2]);
camera.left = frustum[0]
camera.right = frustum[1]
camera.bottom = frustum[2]
camera.top = frustum[3]
camera.updateProjectionMatrix();
}

我知道这不是最好的方法,但我正在尝试一切,因为我有一个非常愚蠢的问题:

现在它正确地更新相机位置和相机平截头体但是如果我碰巧滚动页面(不是 Canvas 本身,而只是页面)完全出于某种原因会触发重新渲染我不知道。

最终的结果是保留了最终的位置,但是视锥体被重置为开始的位置。

我做错了什么?无论如何我可以阻止这种重新渲染的发生吗?

最佳答案

发现了..

因为我不以任何方式滚动,只是把

<Canvas resize={{scroll: false}}
...
</Canvas>

成功了。

可以在这里找到原因: https://github.com/react-spring/react-three-fiber/issues/251

关于typescript - 在 react 三纤维中四处移动正交相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59720627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com