為了創(chuàng)建Verge3D,我們大量修改了Three.js代碼庫,因此我們決定對(duì)API使用“v3d”前綴。但是,我們將嘗試維護(hù)與Three.js的源代碼兼容性。大多數(shù)基于Three.js的應(yīng)用程序和示例都可以在Verge3D中運(yùn)行,無需進(jìn)行任何修改。
我們希望所有對(duì)象,無論它們與攝像機(jī)的距離如何,都顯示相同的大小,即使調(diào)整了窗口的大小。解決此問題的關(guān)鍵公式是該公式針對(duì)給定距離的可見高度:
visible_height = 2 * Math.tan((Math.PI / 180) * camera.fov / 2) * distance_from_camera;
如果我們將窗口高度增加一定百分比,那么我們想要的是在所有距離處的可見高度都以相同百分比增加。不能通過更改相機(jī)位置來做到這一點(diǎn)。相反,您必須更改相機(jī)的視野。例子。
如果將Verge3D應(yīng)用程序嵌入iframe元素中,則可能會(huì)遇到iOS設(shè)備上的特定問題,這會(huì)導(dǎo)致iframe的大小不斷增加,超出瀏覽器窗口的范圍。反過來,這可能導(dǎo)致WebGL崩潰。
要解決此問題,您可以使用以下代碼段,該代碼段將iframe調(diào)整為頁面主體的尺寸,以防止該iframe超出頁面范圍。
<script>if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent)) { var iframe = document.getElementById('myIframe'); function resize() { iframe.style.width = getComputedStyle(document.body).width; iframe.style.height = getComputedStyle(document.body).height; iframe.setAttribute('scrolling', 'no'); } iframe.addEventListener('resize', function(e) { resize(); }); resize();}</script>
當(dāng)頁面上的其他HTML獲得焦點(diǎn)時(shí),就會(huì)發(fā)生這種情況。要解決此問題,請(qǐng)嘗試以下代碼:
document.getElementById("my_iframe_id").focus();
其中my_iframe_id是iframe元素的ID。
聯(lián)系客服