0

WebGLRendererを直接使用すると、背景が自動的に白色でクリアされます。ただし、EffectComposerを使用すると、代わりに背景が黒色でクリアされます。

次に例を示します:http://jsfiddle.net/wereHamster/Lt2DX/。シーンは、白い背景に赤い立方体を示しています。行41をコメントアウトし、行42のコメントを解除すると(EffectComposerを有効にすると)、キャンバスは黒い背景に赤い立方体を表示します。

コードは次のとおりです。

# A simple scene with a red cube in the center.
scene = new THREE.Scene

camera = new THREE.PerspectiveCamera 75, 200/200, 0.01, 1000
camera.position.z = 5
scene.add camera

geometry = new THREE.CubeGeometry 1, 1, 1
material = new THREE.MeshBasicMaterial { color: 0xFF0000 }
scene.add (mesh = new THREE.Mesh geometry, material)


# The barebone WebGL renderer.
renderer = new THREE.WebGLRenderer
renderer.setSize 200, 200
$('body').append renderer.domElement


# Composer with two passes, RenderPass and ShaderPass.
composer   = new THREE.EffectComposer renderer

renderPass = new THREE.RenderPass scene, camera
composer.addPass renderPass

shaderPass = new THREE.ShaderPass THREE.CopyShader
shaderPass.renderToScreen = true
composer.addPass shaderPass


# The main animation loop.
animate = ->
    requestAnimationFrame animate

    mesh.rotation.x += 0.01
    mesh.rotation.y += 0.01


    # If we use the composer to render the scene then the
    # background is black instead of white.

    renderer.render scene, camera
    #composer.render 0.1


animate()
4

1 に答える 1

4

THREE.RenderPass追加の引数があります

renderPass = new THREE.RenderPass scene, camera, null, new THREE.Color().setHex( 0xffffff ), 0

また、rendererデフォルトでは、背景は白ではなくクリアです。あなたが見ているのは、体の色が透けて見えることです。

フィドル: http: //jsfiddle.net/Lt2DX/36/

于 2013-01-21T17:43:36.377 に答える