gpt4 book ai didi

javascript - three.js SoftwareRenderer - 透明背景

转载 作者:行者123 更新时间:2023-12-05 01:27:26 25 4
gpt4 key购买 nike

我正在玩三个 .js 示例之一 http://threejs.org/examples/#software_geometry_earth

如何使背景透明?以下不适用于 SoftwareRenderer(但它确实适用于 WebGLRenderer,但我需要使用 SoftwareRenderer)。

renderer = new THREE.SoftwareRenderer( { alpha: true } );
renderer.setClearColor( 0x000000, 0 );

有什么想法吗?

完整代码为:

        var container, stats;
var camera, scene, renderer;
var group;
var mouseX = 0, mouseY = 0;

var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;

init();
animate();

function init() {

container = document.getElementById( 'container' );

camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 2000 );
camera.position.z = 500;

scene = new THREE.Scene();

group = new THREE.Group();
scene.add( group );

// earth

var loader = new THREE.TextureLoader();
loader.load( 'textures/land_ocean_ice_cloud_2048.jpg', function ( texture ) {

var geometry = new THREE.SphereGeometry( 200, 20, 20 );

var material = new THREE.MeshLambertMaterial( { map: texture, overdraw: 0.5 } );
var mesh = new THREE.Mesh( geometry, material );
group.add( mesh );

} );

// shadow

var canvas = document.createElement( 'canvas' );
canvas.width = 128;
canvas.height = 128;

var texture = new THREE.Texture( canvas );
texture.needsUpdate = true;

var geometry = new THREE.PlaneBufferGeometry( 0, 0, 0, 0 );
var material = new THREE.MeshBasicMaterial( { map: texture, overdraw: 0.5 } );

var mesh = new THREE.Mesh( geometry, material );
mesh.position.y = - 250;
mesh.rotation.x = - Math.PI / 2;
group.add( mesh );

renderer = new THREE.SoftwareRenderer( { alpha: true } );
renderer.setClearColor( 0x000000, 0 );
renderer.setSize( window.innerWidth, window.innerHeight );

container.appendChild( renderer.domElement );

document.addEventListener( 'mousemove', onDocumentMouseMove, false );

//

window.addEventListener( 'resize', onWindowResize, false );

}

function onWindowResize() {

windowHalfX = window.innerWidth / 2;
windowHalfY = window.innerHeight / 2;

camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();

renderer.setSize( window.innerWidth, window.innerHeight );

}

function onDocumentMouseMove( event ) {

mouseX = ( event.clientX - windowHalfX );
mouseY = ( event.clientY - windowHalfY );

}

//

function animate() {

requestAnimationFrame( animate );

render();
// stats.update();

}

function render() {

camera.position.x += ( mouseX - camera.position.x ) * 0.05;
camera.position.y += ( - mouseY - camera.position.y ) * 0.05;
camera.lookAt( scene.position );

group.rotation.y -= 0.005;

renderer.render( scene, camera );

}

**编辑:here's a link to the softwareRenderer.js file我用了。我用 Sublime Text 打开它。

最佳答案

你需要设置:

renderer = new THREE.SoftwareRenderer({ alpha: true}); // just set this anyway , I didn't test this on false....

我有它为你工作,你需要编辑 renderers/SoftwareRenderer.js将行替换为:

  /*line85 :*/  context.fillRect( 0, 0, 0, 0 ); 

stops for the bg to be rendered

/*line596 :*/ data[ poffset ++ ] = 0;

像重新绘制一样停止填充 block ...

测试场景和飞机..和 css html 图像背景..我用了这个 http://threejs.org/examples/#software_geometry_earth没有地球,只是简化它以进行快速测试

这是一个非静态场景

enter image description here

关于javascript - three.js SoftwareRenderer - 透明背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30038600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com