Javascript 如何使用three.js/webgl将二维图形转换为三维图形

Javascript 如何使用three.js/webgl将二维图形转换为三维图形,javascript,html,three.js,webgl,Javascript,Html,Three.js,Webgl,嗨,我正在尝试使用js在画布中绘制2d对象。如果单击按钮,它将更改为同一页面中另一画布中的3d对象。 我尝试使用three.js。如果我想绘制3d对象,我会在代码中手动给出点。但我不知道如何转换为3d坐标。请提出任何意见 这是我绘制进入计划的代码 function init() { // SCENE scene = new THREE.Scene(); // CAMERA var SCREEN_WIDTH = window.innerWidth, SCREEN_HE

嗨,我正在尝试使用js在画布中绘制2d对象。如果单击按钮,它将更改为同一页面中另一画布中的3d对象。 我尝试使用three.js。如果我想绘制3d对象,我会在代码中手动给出点。但我不知道如何转换为3d坐标。请提出任何意见

这是我绘制进入计划的代码

   function init() 
   {
 // SCENE
    scene = new THREE.Scene();
// CAMERA
   var SCREEN_WIDTH = window.innerWidth, SCREEN_HEIGHT =  window.innerHeight;
   var VIEW_ANGLE = 45, ASPECT = SCREEN_WIDTH / SCREEN_HEIGHT, NEAR = 0.1, FAR = 20000;
  camera = new THREE.PerspectiveCamera( VIEW_ANGLE, ASPECT, NEAR, FAR);
  scene.add(camera);
  camera.position.set(0,150,400);
  camera.lookAt(scene.position);    
  // RENDERER
  if ( Detector.webgl )
    renderer = new THREE.WebGLRenderer( {antialias:true} );
   else
    renderer = new THREE.CanvasRenderer(); 
    renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
   container = document.getElementById( 'ThreeJS' );
   container.appendChild( renderer.domElement );
// EVENTS
   THREEx.WindowResize(renderer, camera);
   THREEx.FullScreen.bindKey({ charCode : 'm'.charCodeAt(0) });
// CONTROLS
   controls = new THREE.OrbitControls( camera, renderer.domElement );
// STATS
   stats = new Stats();
    stats.domElement.style.position = 'absolute';
   stats.domElement.style.bottom = '0px';
   stats.domElement.style.zIndex = 100;
   container.appendChild( stats.domElement );
   // LIGHT
   var light = new THREE.PointLight(0xffffff);
   light.position.set(0,250,0);
   scene.add(light);
// FLOOR
   var floorTexture = new THREE.ImageUtils.loadTexture( 'images/checkerboard.jpg' );
   floorTexture.wrapS = floorTexture.wrapT = THREE.RepeatWrapping; 
    floorTexture.repeat.set( 10, 10 );
    var floorMaterial = new THREE.MeshBasicMaterial( { map: floorTexture, side: THREE.DoubleSide } );
    var floorGeometry = new THREE.PlaneGeometry(1000, 1000, 10, 10);
  var floor = new THREE.Mesh(floorGeometry, floorMaterial);
  floor.position.y = -0.5;
  floor.rotation.x = Math.PI / 2;
  scene.add(floor);
  // SKYBOX/FOG
  var skyBoxGeometry = new THREE.CubeGeometry( 10000, 10000, 10000 );
  var skyBoxMaterial = new THREE.MeshBasicMaterial( { color: 0x9999ff,    side: THREE.BackSide } );
    var skyBox = new THREE.Mesh( skyBoxGeometry, skyBoxMaterial );
       scene.fog = new THREE.FogExp2( 0x9999ff, 0.00025 );

  var starPoints = [];
  starPoints.push( new THREE.Vector2 (   10, 50 ) );
  starPoints.push( new THREE.Vector2 (  50, 100 ) );
  starPoints.push( new THREE.Vector2 (  100, 150 ) );
  starPoints.push( new THREE.Vector2 (  150, 200 ) );

 /*starPoints.push( new THREE.Vector2 (  30, -50 ) );
  starPoints.push( new THREE.Vector2 (   0, -20 ) );
  starPoints.push( new THREE.Vector2 ( -30, -50 ) );
  starPoints.push( new THREE.Vector2 ( -20, -10 ) );
  starPoints.push( new THREE.Vector2 ( -40,  10 ) );
  starPoints.push( new THREE.Vector2 ( -10,  10 ) );*/

   var starShape = new THREE.Shape( starPoints );

   var extrusionSettings = {
    size: 30, height: 4, curveSegments: 3,
    bevelThickness: 1, bevelSize: 2, bevelEnabled: false,
    material: 0, extrudeMaterial: 1
    };

    var starGeometry = new THREE.ExtrudeGeometry( starShape,   extrusionSettings );

    var materialFront = new THREE.MeshBasicMaterial( { color: 0xffff00   } );
    var materialSide = new THREE.MeshBasicMaterial( { color: 0xff8800 } );
    var materialArray = [ materialFront, materialSide ];
    var starMaterial = new THREE.MeshFaceMaterial(materialArray);

    var star = new THREE.Mesh( starGeometry, starMaterial );
    star.position.set(0,50,0);
    scene.add(star);

   // add a wireframe to model
    var wireframeTexture = new THREE.MeshBasicMaterial( { color: 0x000000, wireframe: true, transparent: true } ); 
   var star = new THREE.Mesh( starGeometry, wireframeTexture );
   star.position.set(0,50,0);
   scene.add(star);
   }

   function animate() 
   {
   requestAnimationFrame( animate );
   render();        
    update();
    }

  function update()
   {
   if ( keyboard.pressed("z") ) 
   { 
   // do something

    }
    controls.update();
    stats.update();
   }

   function render() 
   {
    renderer.render( scene, camera );
   }
我想帮忙

您可以访问:

方法是:

var extrusionSettings = {
        size: 30, height: 4, curveSegments: 3,
        bevelThickness: 1, bevelSize: 2, bevelEnabled: false,
        material: 0, extrudeMaterial: 1
    };

    var starGeometry = new THREE.ExtrudeGeometry( starShape, extrusionSettings );

您的意思是从构造函数创建三维点吗? 如果是这样的话,它只是three.js中的一行

 new THREE.Vector3( x, y, z );

谢谢你的回复,我已经看到了这个网址。我不知道如何将二维坐标更改为三维坐标。我已经使用了babylon.js。进入babylon.js…你会有一些想法的