# 常见问题（[name]）

## 哪一种三维物体格式能够得到最好地支持？

推荐使用glTF（gl传输格式）来对三维物体进行导入和导出，由于glTF这种格式专注于在程序运行时呈现三维物体，因此它的传输效率非常高，且加载速度非常快。

three.js同样也为其它广受欢迎的格式（例如FBX、Collada以及OBJ等）提供了载入工具。即便如此，你应当还是首先尝试着在你的项目中建立一个基于glTF的工作流程。 了解更多详细信息，请查看[link:#manual/introduction/Loading-3D-models loading 3D models]。

## 为什么在示例中会有一些和viewport相关的meta标签？

`<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">`

这些标签用于在移动端浏览器上控制视口的大小和缩放（页面内容可能会以与可视区域不同的大小来呈现）。

[link:https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html Safari: Using the Viewport]

[link:https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag MDN: Using the viewport meta tag]

## 如何在窗口调整大小时保持场景比例不变？

我们希望所有的物体，无论它们距离摄像机有多远，都能呈现相同尺寸，即使是在窗口被重新调整大小的时候。 解决这个问题的关键，是一个很重要的公式：给定距离，求可见高度 `visible_height = 2 * Math.tan( ( Math.PI / 180 ) * camera.fov / 2 ) * distance_from_camera;
` 如果我们以一定的百分比增加了窗口的高度，那我们所想要的结果便是所有距离的可见高度都增加相同的百分比。 这并不能通过改变摄像机的位置来实现，相反，你得改变摄像机的视野角度（FOV）。这是个示例：[link:http://jsfiddle.net/Q4Jpu/ Example].

## 为什么我的物体的一部分是不可见的？

这可能是由于面剔除而导致的。面是具有朝向的，这个朝向决定了哪边是正面或者哪边是背面。 在正常情况下，渲染时会将背面进行剔除。要查看这是不是你所遇到的问题，请将material的side更改为THREE.DoubleSide。 `material.side = THREE.DoubleSide`

## 为什么有时候无效的输入会让three.js返回奇怪的结果？

出于性能考虑，大多数情况下 three.js 不验证输入。确保所有输入均有效是你的应用的责任。