包含个人three.js库

时间:2017-05-04 00:27:25

标签: three.js aframe

警告:以下是凭经验确定的。

如果您正在Aframe中编写应用程序,请注意您不需要在html中包含three.js lib,因为AFrame附带了它自己的three.js版本和非Aframe您的应用程序的某些部分也可以使用此版本的three.js。事实上,你不仅不需要它,你绝对不应该 包含它。

如果您包含自己的three.js版本,那么AFrame将使用它构建的版本。虽然大部分时间不会导致问题,但可能导致不可预测的结果。对于Instance,我正在混合Aframe-master.js v0.5,它假设是three.js v84,而且还是src'在three.js v85中我收到了以下错误消息:

Uncaught Error: `Entity.setObject3D` was called with an object that was not an instance of THREE.Object3D.
    at HTMLElement.value (aframe-master.js:72729)
    at aframe-master.js:66470
    at aframe-master.js:48132
    at ObjectLoader.parse (Three.js:32979)
    at Three.js:32938
    at XMLHttpRequest.<anonymous> (Three.js:29098)

经过大量研究后,我确定这是因为在three.js v85中他们dropped the blendCharacter object但是aframe-master v0.5是针对three.js v84构建的,它仍然拥有它并假设它在那里

我运行的混合版本有一段时间了,所以这是一个微妙的错误。如果你确实得到了一个情况,你肯定会得到一些其他的错误。我只记录这个,因为我花了半天的时间试图解决这个问题,也许我可以帮助别人解决问题。

1 个答案:

答案 0 :(得分:1)

如果使用AFrame,请不要在html中包含three.js:

<!doctype html>
<html lang="en">
<head>
    <title>A-frame controller test</title>
    <meta charset="utf-8">
    <link rel="shortcut icon" href="">
    <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  <script src="lib/aframe-master.js"></script>
</head>
<body>
  <script src="https://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" crossorigin="anonymous"></script>
  <script src="lib/Three.js"></script> <!-- remove this -->
  <script src="lib/grab.js"></script> 
  <script src="js/main.js"></script>
    <a-scene>

在控制台上查看并确保Aframe和three.WebGlRenderer使用相同的版本:

坏(混合三个.js 0.84和0.85):

A-Frame Version: 0.5.0 (Date 03-05-2017, Commit #31d05b0)
aframe-master.js:76936 three Version: ^0.84.0
aframe-master.js:76937 WebVR Polyfill Version: dmarcos/webvr-polyfill#a02a8089b
THREE.WebGLRenderer 85dev 

好(到处都是三.js v.84):

A-Frame Version: 0.5.0 (Date 03-05-2017, Commit #31d05b0)
aframe-master.js:76936three Version: ^0.84.0
aframe-master.js:76937WebVR Polyfill Version: dmarcos/webvr-polyfill#a02a8089b
aframe-master.js:24581 THREE.WebGLRenderer 84