透明代码不适用于Three.js

时间:2018-11-15 18:52:52

标签: javascript three.js

我进行了搜索并尝试了一些答案,但这没有用。

我这样尝试过:

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

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

正如我所说的那样,我只看到黑屏:/

这是我的“ init”函数:

function init() {
  var root = new THREERoot({
    createCameraControls:false,
		antialias: true,
    fov:60
  });
  root.renderer.setClearColor(0xffffff);
  root.renderer.setPixelRatio(window.devicePixelRatio || 1);
  root.camera.position.set(0, 0, 400);

  var textAnimation = createTextAnimation();
  textAnimation.position.y = -40;
  root.scene.add(textAnimation);

  var tl = new TimelineMax({
    repeat:-1,
    repeatDelay:0.25,
    yoyo:true
  });
  tl.fromTo(textAnimation, 4,
    {animationProgress:0.0},
    {animationProgress:1.0, ease:Power1.easeInOut},
    0
  );

  createTweenScrubber(tl);
}

这就是我正在使用的:

https://codepen.io/zadvorsky/pen/xVrMMO

1 个答案:

答案 0 :(得分:1)

为了使Three.js项目透明,您需要将其渲染器的alpha参数设置为true:

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

这样,不呈现任何内容的部分将显示HTML页面的背景,因此,如果您的HTML背景为#ff0000,那么您应该会看到红色。

但是,实际上,您在执行表演时会禁用透明度

  root.renderer.setClearColor(0xffffff);

此行在每帧上绘制白色背景,这意味着它不再透明。

此外,我看不到您的renderer.render(scene, camera);行,因为您的代码示例范围如此狭窄。