首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLTF在画布内三度拉伸

GLTF在画布内三度拉伸
EN

Stack Overflow用户
提问于 2021-12-14 14:02:50
回答 1查看 291关注 0票数 0

问题所在

当加载我的GLTF在帆布元素的反应-三纤维在一个100 of x 100 three,GLTF模型似乎看起来很好。但是,当我将包含div和画布的大小更改为50 be x 100 be时,GLTF模型似乎被拉伸了。

100 x 100截图

100 vh x 50 vh截图

到目前为止我尝试过的

我试着设置相机的高宽比。

代码语言:javascript
复制
<Controls
        enableDamping
        rotateSpeed={0.3}
        dampingFactor={0.1}
        cameraProps={{
          position: [11, 11, 11],
          near: 0.1,
          far: 1000,
          fov: 50,
          aspect: [random number here doesn't change anything]
        }}
        maxDistance={18}
      />

我尝试在调整大小和设置高宽比时添加一个窗口事件侦听器,如下所示:

代码语言:javascript
复制
function onWindowResize() {
    camera.aspect = 2.0 -> doesn't have any effect, not even with random numbers
    camera.updateProjectionMatrix();
    renderer.setSize(book.clientWidth, book.clientHeight);
}

上述一切似乎都没有用,我别无选择。我在google上找到了几个相关的帖子。我都试过了..。

版本等

代码语言:javascript
复制
"@react-three/drei": "^7.25.0",
"@react-three/fiber": "^7.0.21",
"@react-three/postprocessing": "^2.0.5",

我使用orbot控件和透视相机。下面是到代码沙箱的链接。

https://codesandbox.io/s/36uiq?file=/src/index.js

希望有人能帮我。

EN

回答 1

Stack Overflow用户

发布于 2021-12-16 22:08:03

当更新相机的高宽比时,确保它与渲染器的纵横比匹配:

代码语言:javascript
复制
camera.aspect = book.clientWidth / book.clientHeight;
camera.updateProjectionMatrix();
renderer.setSize( book.clientWidth, book.clientHeight );

确保camera存在,并且它是用来进行渲染的照相机。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70350200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档