小编For*_*ech的帖子

仅当鼠标位于画布上时才允许鼠标控制three.js场景

three.js画布在一个包含其他内容的较大网页内是一个500 x 500的正方形,我需要鼠标控制相机(用于缩放和旋转对象)才能在鼠标位于500 x 500平方内时发生.

此外,我无法滚动网页,但可能会在我们将鼠标事件监听器与500 x 500画布隔离时修复.

当前代码:

<!DOCTYPE html>
<html>
<head> 
   <style>
    div         { 
            position:relative;
            left:100px;           
            top:100px;
            background-color: #eeeeee;
            border:1px solid black;             
            width:500px;
            height:500px;
                }

    canvas      {
            width:500px;
            height:500px;
                }

   </style> 
</head>     
<body> 

    <script src="https://raw.github.com/mrdoob/three.js/master/build/three.min.js"></script>

    <script src="https://raw.github.com/mrdoob/three.js/master/examples/js/loaders/STLLoader.js"></script>

    <script src="https://raw.github.com/mrdoob/three.js/master/examples/js/controls/TrackballControls.js"></script>

    <script>
        var container, camera, scene, renderer, controls;

        init();
        animate();

        function init() {

            container = document.createElement( 'div' );
            document.body.appendChild( container );

            var width = container.clientWidth;
            var height = container.clientHeight;


            camera = new THREE.PerspectiveCamera( 10 , width / height , .1 …
Run Code Online (Sandbox Code Playgroud)

3d three.js

11
推荐指数
1
解决办法
9946
查看次数

需要.js和HTML示例来在网页中显示.STL 3D对象

任何人都可以生成一个干净的"for dummies "HTML示例,使用STLLoader.js网页中显示ASCII(非二进制).stl对象文件?结果应该让用户在当前的HTML5浏览器中操作对象,并且没有超出灰度对象表面和背景的花哨视觉效果.

STLLoader.js可能需要three.js或three.min.js的帮助,但我不知道.STLLoader.js包含以下用法示例,但未包含HTML包装器.

STLLoader.js中的用法示例

     /** 
     * Usage:
     *  var loader = new THREE.STLLoader();
     *  loader.addEventListener( 'load', function ( event ) {
     *
     *      var geometry = event.content;
     *      scene.add( new THREE.Mesh( geometry ) );
     *
     *  } );
     *  loader.load( './models/stl/slotted_disk.stl' );
     */
Run Code Online (Sandbox Code Playgroud)

3d webgl three.js

8
推荐指数
1
解决办法
1万
查看次数

为什么 FileReader 不将文件传递给three.js 场景使用的loader.load()?

我正在尝试使用 FileReader 将客户端 ASCII 文件传递​​给 loader.load() 但看起来该文件永远不会到达那里。该文件会出现在3D场景中,如果我用loader.load('server path to test_file.stl')的不是loader.load(fileObject)

我包含了一个 alert() 函数来显示文件的 ASCII 文本,它告诉我 JavaScript 正在抓取和处理文件,并且没有 Chrome 安全屏障,但显然我没有正确地将文件传递到loader.load().

<!DOCTYPE html>
<html>
<head>
<style>
    body        {
            background-color:#fea47c;
                }

    div         { 
            position:relative;
            left:200px;           
            top:0px;
            background-color: #eeeeee;
            border:1px solid black;             
            width:550px;
            height:550px;
                }

    canvas      {
            width:550px;
            height:550px;
                }
</style>
</head>

<body>

<script src="https://raw.github.com/mrdoob/three.js/master/build/three.min.js"></script>
<script src="https://raw.github.com/mrdoob/three.js/master/examples/js/loaders/STLLoader.js"></script>      
<script src="https://raw.github.com/mrdoob/three.js/master/examples/js/controls/TrackballControls.js"></script> 

<input type="file" id="pickfile"></input>

<script> 

   document.getElementById('pickfile').addEventListener('change', readFile, false);

    function readFile (evt) 
                {
    var fileObject = evt.target.files[0];    
    var reader = new …
Run Code Online (Sandbox Code Playgroud)

javascript three.js

4
推荐指数
1
解决办法
2978
查看次数

需要在three.js场景中对3D对象进行交互式鼠标控制

我正在尝试添加加载的.stl 3D对象的交互式鼠标控件.我的困难在于集成鼠标控制代码,而不是查找示例或显示对象.以下是我正在使用的内容.我的偏好是用鼠标事件控制摄像机位置(而不是抓住对象上的一个定义点),这样看起来我用鼠标旋转对象并用滚轮放大和缩小.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>three.js webgl - STL</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
    <style>
        body    {
            font-family: Monospace;
            background-color: #000000;
            margin: 0px;
            overflow: hidden;
                }

        a { color: skyblue }
    </style>
</head>
<body>

    <script src="https://raw.github.com/mrdoob/three.js/master/build/three.min.js"></script>

    <script src="https://raw.github.com/mrdoob/three.js/master/examples/js/loaders/STLLoader.js"></script>

    <script src="https://raw.github.com/mrdoob/three.js/master/examples/js/controls/TrackballControls.js"></script>

    <script>
        var container, camera, scene, renderer;

        init();
        animate();

        function init() {

            container = document.createElement( 'div' );
            document.body.appendChild( container );

            camera = new THREE.PerspectiveCamera(

            35,                                     // field of view
            window.innerWidth / window.innerHeight, // aspect ratio 
            1 …
Run Code Online (Sandbox Code Playgroud)

3d webgl three.js

2
推荐指数
1
解决办法
4723
查看次数

标签 统计

three.js ×4

3d ×3

webgl ×2

javascript ×1