Nền trong suốt với ba.js


113

Mã hoạt động, nhưng tôi đang gặp sự cố khi đặt nền trong suốt cho canvas với ba.js. Tôi sử dụng:

Background.renderer.setClearColor(0xffffff, 0);

Nhưng sau đó nền bị đen. Làm cách nào để thay đổi nó thành minh bạch?


Mật mã:

   var camera, scene, renderer;
   var mouseX = 0, mouseY = 0;
   var p;

   var windowHalfX = site.Width / 2;
   var windowHalfY = site.Height / 2;

   Background.camera = new THREE.PerspectiveCamera( 35, site.Width / site.Height, 1, 2000 );
   Background.camera.position.z = 300;
   //camera.position.y = 200;

   // scene
   Background.scene = new THREE.Scene();

   // texture
   var manager = new THREE.LoadingManager();
   manager.onProgress = function ( item, loaded, total ) {
      console.log('webgl, twice??');
      //console.log( item, loaded, total );
   };


   // particles
   var p_geom = new THREE.Geometry();
   var p_material = new THREE.ParticleBasicMaterial({
      color: 0xFFFFFF,
      size: 1
   });

   // model
   var loader = new THREE.OBJLoader( manager );
   loader.load( site.base_url + '/assets/models/head.obj', function ( object ) {

      object.traverse( function ( child ) {

         if ( child instanceof THREE.Mesh ) {

            // child.material.map = texture;

            var scale = 6;

            $(child.geometry.vertices).each(function() {
               p_geom.vertices.push(new THREE.Vector3(this.x * scale, this.y * scale, this.z * scale));
            })
         }
      });

      Background.scene.add(p)
   });

   p = new THREE.ParticleSystem(
      p_geom,
      p_material
   );

   Background.renderer = new THREE.WebGLRenderer();
   Background.renderer.setSize( site.Width, site.Height );
   Background.renderer.setClearColor(0xffffff, 0);

   $('.particlehead').append(Background.renderer.domElement);
   $('#content').on('mousemove', onDocumentMouseMove);
   site.window.on('resize', onWindowResize);

   function onWindowResize() {
      windowHalfX = site.Width / 2;
      windowHalfY = site.Height / 2;
      //console.log(windowHalfX);

      Background.camera.aspect = site.Width / site.Height;
      Background.camera.updateProjectionMatrix();

      Background.renderer.setSize( site.Width, site.Height );
   }

   function onDocumentMouseMove( event ) {
      mouseX = ( event.clientX - windowHalfX ) / 2;
      mouseY = ( event.clientY - windowHalfY ) / 2;
      //console.log(mouseX)
   }

   Background.animate = function() { 

      //console.log('animate2');
      Background.ticker = TweenMax.ticker;
      Background.ticker.addEventListener("tick", Background.animate);

      render();
   }

   function render() {
      Background.camera.position.x += ( (mouseX * .5) - Background.camera.position.x ) * .05;
      Background.camera.position.y += ( -(mouseY * .5) - Background.camera.position.y ) * .05;

      Background.camera.lookAt( Background.scene.position );

      Background.renderer.render( Background.scene, Background.camera );
   }

   render();

Câu trả lời:


232

Nếu bạn muốn có một nền trong suốt trong three.js, bạn cần truyền alphatham số vào hàm WebGLRenderertạo.

var renderer = new THREE.WebGLRenderer( { alpha: true } );

Bạn có thể để màu rõ ràng ở giá trị mặc định.

renderer.setClearColor( 0x000000, 0 ); // the default

ba.js r.71


@WestLangley Chúng ta có nên thấy hiệu suất giảm khi sử dụng kỹ thuật này không? Nó có đáng chú ý không?
tfrascaroli

1
@tfrascaroli Bạn có thấy không?
WestLangley

Tôi đã đăng nhận xét trước khi thử. Bây giờ tôi đã thử nó, nó không giống như nó, nhưng hình học tôi đang vẽ thực sự rất nhỏ. Tôi đã hỏi vì tôi đang có kế hoạch sử dụng nó trong các dự án lớn hơn. Dù sao, nó dường như không có tác động, hoặc ít nhất là không liên quan trong dự án của tôi.
tfrascaroli

2
điều này được gọi là một niềm tin. "chỉ cần dán dòng mã này". Không thường xuyên tìm thấy thứ dễ dàng như thế này trong vòng 3 giây. cảm ơn người anh em
messerbill

@WestLangley làm cách nào để đặt hình nền với hiệu ứng đổ bóng? VolumetericLightShader stackoverflow.com/questions/46864037/…
gạch dưới
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.