首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Three.js -为什么csg.js不能工作?

Three.js -为什么csg.js不能工作?
EN

Stack Overflow用户
提问于 2015-09-25 09:06:06
回答 1查看 2.6K关注 0票数 1

我试着用csg.js-函数将一个球体从盒子里切出来,但它不起作用?我读过关于http://learningthreejs.com/blog/2011/12/10/constructive-solid-geometry-with-csg-js/的教程,但它仍然不起作用。

代码语言:javascript
复制
<html>
    <head>
        <title>Experiment</title>
    </head>

    <body>
        <script src="three_js\build\three.min.js"></script>
        <script src="ThreeCSG.js"></script> 
        <script src="csg.js"></script>          
        <script type="text/javascript"> 

    var scene = new THREE.Scene();
    var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );

    var renderer = new THREE.WebGLRenderer();

    renderer.setSize( window.innerWidth-20, window.innerHeight -20);
    document.body.appendChild( renderer.domElement );   

    var geometry1 = new THREE.BoxGeometry( 10, 10, 10);
    var material = new THREE.MeshPhongMaterial( {specular: "#fdfb57", color: "#d8d613", emissive: "#6b6a0d", side: THREE.DoubleSide} );
    var box = new THREE.Mesh(geometry1, material);
    var sphere = new THREE.Mesh(new THREE.SphereGeometry(5, 32, 32), material);
    scene.add(box);
    scene.add(sphere);

    var boxCsg = THREE.CSG.toCSG(box);
    var sphereCsg = THREE.CSG.toCSG(sphere);

    boxCsg.substract(sphereCsg);    

    box = THREE.CSG.fromCSG(boxCsg);


    camera.position.z = 50;


    var directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );
    directionalLight.position.set( 5, 10, 5 );
    scene.add( directionalLight );

                var render = function () {
                    requestAnimationFrame( render );
                    renderer.render(scene, camera);
                    //Hier wird die Größe des Fensters manipuliert!
                    renderer.setSize(window.innerWidth - 20, window.innerHeight - 20);                  
                };


                render();   

            </script>
        </body>
    </html>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-25 09:58:56

这篇文章过时了,这是新的语法:

代码语言:javascript
复制
var box = new THREE.Mesh( new THREE.BoxGeometry( 10, 1, 10 ) );
var box_bsp = new ThreeBSP( box );

var cutgeo = new THREE.SphereGeometry( 1, 16, 8 );
var sub = new THREE.Mesh( cutgeo );
var subtract_bsp  = new ThreeBSP( sub );
var result_bsp  = box_bsp.subtract( substract_bsp );

var result = result_bsp.toMesh();
scene.add( result );

Three.js r107:http://jsfiddle.net/r7suq1mv/2/

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32778617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档