2017-09-09 7 views
0

私は現在、ビデオの背景を持つWebページを作成しようとしていますが、フォアグラウンドには移動/インタラクティブなWebGL要素またはobjがあります。Three.jsビデオ背景静止カメラ

カメラは静止していますが、フォアグラウンドの3Dオブジェクトは移動します。私は、CSSビデオの背景チュートリアルをやろうとしましたが、ビデオは3Dオブジェクトの代わりにフォアグラウンドにあります。

次は私のHTMLです:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"> 
     <link rel="stylesheet" href="style.css"> 
     <style> 
      body { 
       margin: 0px; 
       background-color: #000000; 
       overflow: hidden; 
         } 
     </style> 
    </head> 
    <body> 
     <div class="container"> 
     <video poster="poster.png" autoplay="true" loop> 
      <source src="vine.mp4" type="video/mp4"> 
      <source src="vine.webm" type="video/webm"> 
      </video> 
     </div> 

     <script src="three.min.js"></script> 

     <script> 
      var camera, scene, renderer; 
      var mesh; 
      init(); 
      animate(); 
      function init() { 
       camera = new THREE.PerspectiveCamera(70, window.innerWidth/window.innerHeight, 1, 1000); 
       camera.position.z = 400; 
       scene = new THREE.Scene(); 
       var texture = new THREE.TextureLoader().load('crate.gif'); 
       var geometry = new THREE.BoxBufferGeometry(200, 200, 200); 
       var material = new THREE.MeshBasicMaterial({ map: texture }); 
       mesh = new THREE.Mesh(geometry, material); 
       scene.add(mesh); 
       renderer = new THREE.WebGLRenderer(); 
       renderer.setPixelRatio(window.devicePixelRatio); 
       renderer.setSize(window.innerWidth, window.innerHeight); 
       document.body.appendChild(renderer.domElement); 
       // 
       window.addEventListener('resize', onWindowResize, false); 
      } 
      function onWindowResize() { 
       camera.aspect = window.innerWidth/window.innerHeight; 
       camera.updateProjectionMatrix(); 
       renderer.setSize(window.innerWidth, window.innerHeight); 
      } 
      function animate() { 
       requestAnimationFrame(animate); 
       mesh.rotation.x += 0.005; 
       mesh.rotation.y += 0.01; 
       renderer.render(scene, camera); 
      } 
     </script> 

    </body> 
</html> 

そして、最初に参照されているCSSは次のとおりです。

body, html { 
margin: 0; 
padding: 0; 
} 

video { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    transform: translate(-50%, -50%); 
    min-width: 100%; 
    min-height: 100%; 
    width: auto; 
    height; auto; 
} 

おそらく、私はどのようにHTML、CSS、およびThree.js作品を誤解していますしかし私は得ることができるすべての助けに感謝します。ありがとうございました。

答えて

0

ビデオの上にthree.jsキャンバスを配置し、レンダラーが透明な背景を持つようにします。あなたのCSSで

は、

video { z-index: -1; } 

そしてtransparent backgroundため

を設定

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

three.js r.87

を設定しました