तीन.js के साथ पारदर्शी पृष्ठभूमि


113

कोड काम करता है, लेकिन मैं तीन के साथ कैनवास पर पारदर्शी पृष्ठभूमि स्थापित करने में समस्या कर रहा हूं। मैं उपयोग करता हूं:

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

लेकिन तब पृष्ठभूमि काली हो जाती है। पारदर्शी होने के लिए मैं इसे कैसे बदलूं?


कोड:

   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();

जवाबों:


232

यदि आप तीन .js में एक पारदर्शी पृष्ठभूमि चाहते हैं, तो आपको निर्माता से alphaपैरामीटर में पास की आवश्यकता है WebGLRenderer

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

आप डिफ़ॉल्ट मान पर स्पष्ट रंग छोड़ सकते हैं।

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

तीन .js r.71


@WestLangley क्या हमें इस तकनीक का उपयोग करते समय एक प्रदर्शन ड्रॉप देखना चाहिए? क्या यह ध्यान देने योग्य है?
tfrascaroli

1
@tfrascaroli क्या आपने एक देखा?
वेस्टलैंगले

मैंने कोशिश करने से पहले टिप्पणी पोस्ट की। अब जब मैंने इसे आज़मा लिया है, यह ऐसा नहीं दिखता है, लेकिन मैं जिस ज्यामिति का प्रतिपादन कर रहा हूँ, वह वास्तव में छोटा है। मैं पूछ रहा था क्योंकि मैं बड़ी परियोजनाओं में इसका उपयोग करने की योजना बना रहा था। वैसे भी, इसका कोई असर नहीं दिखता, या कम से कम मेरी परियोजना के भीतर निर्भर नहीं है।
tfrascaroli

2
इसे एक विलायक कहा जाता है। "बस इस कोड लाइन को पेस्ट करें"। इस तरह से आसान नहीं मिल रहा है। धन्यवाद भाई
मेसर्बिल

@WestLangley मैं छाया प्रभाव के साथ पृष्ठभूमि छवि कैसे सेट कर सकता हूं? VolumetericLightShader stackoverflow.com/questions/46864037/…
अंडरस्कोर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.