【问题标题】:Putting three.js inside of div 2将 three.js 放入 div 2
【发布时间】:2017-01-09 10:37:09
【问题描述】:

我为另一个基本问题道歉,该问题基本上是另一个旧线程的副本,但我是 three.js 的新手,在这里通过反复试验或多或少地学习......

我找到了旧线程“将three.js 动画放入div”,他们成功地将three.js 动画放入div 中,代码如下:

container = document.getElementById( 'canvas' );
document.body.appendChild( container );
renderer = new THREE.WebGLRenderer();
renderer.setSize( 200, 200 );
container.appendChild( renderer.domElement );

上述脚本的 JSFiddle (http://jsfiddle.net/fek9ddg5/1/)

我正在尝试做同样的事情并将这些行添加到我的脚本中,但结果却是一个完全白屏。我设法将屏幕基本上分成两部分,一个完全白色,另一个带有脚本。但是,它失败了,因为即使它在白色部分移动,脚本也会对鼠标做出反应。我做了一个codepen,我把我添加的脚本放在了注释符号里面。

在这里查看:http://codepen.io/anon/pen/qRdGWo

【问题讨论】:

    标签: three.js


    【解决方案1】:

    通常将三个.js 添加到页面中,我会使用这个:

    renderer = new THREE.WebGLRenderer();
    renderer.setPixelRatio(window.devicePixelRatio);
    renderer.setSize(window.innerWidth, window.innerHeight);
    // Add renderer to page
    document.body.appendChild(renderer.domElement);
    
    // Create camera.
    camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 1, 1000);
    camera.position.z = 400;
    

    可以在this fiddle中看到

    但是,要将其添加到页面上已经存在 ID 为“canvas-container”的 div,我会使用..

    renderer = new THREE.WebGLRenderer();
    renderer.setPixelRatio(window.devicePixelRatio);
    // get the div that will hold the renderer
    var container = document.getElementById('canvas-container');
    var w = container.offsetWidth;
    var h = container.offsetHeight;
    renderer.setSize(w, h);
    // add the renderer to the div
    container.appendChild(renderer.domElement);
    
    // Create camera.
    camera = new THREE.PerspectiveCamera(70, w / h, 1, 1000);
    camera.position.z = 400;
    

    this fiddle可以看到

    基本上,渲染器的添加位置取决于您调用 appendChild(renderer.domElement) 的 dom 元素。

    【讨论】:

    • 谢谢。您描述的第二种选择正是我想要实现的,但结果总是相同的,一个单独的白色标题,里面有一个黑框......查看这个代码笔:codepen.io/anon/pen/qRdGWo
    • 第一段代码只是将渲染器添加到正文中,第二段代码将其添加到 div 中。我发布了两者,以便您可以看到差异并希望了解它。
    • 您链接的笔中的代码是一团糟。您正在创建 2 个渲染器,1 个 webGL 和 1 个 Canvas,并将它们都添加到 canvas-container div
    • HERE 是你的笔,已清理干净,第二个(画布)渲染已移除,事件更改为在容器 div 上侦听,统计信息已修复……您可以更改只需更改“canvas-container”上的 css 即可实现three.js 场景
    • 非常感谢 :) 我昨天坐了几个小时,浏览了你的新脚本,它更有意义。但是,当我使用它时,我看到粒子再次变成正方形......我通过将您的第一个脚本与您的第二个脚本结合起来解决了这个问题,现在一切都很完美。
    猜你喜欢
    • 2013-07-04
    • 2018-08-13
    • 1970-01-01
    • 2018-12-19
    • 2016-09-23
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多