将three.js背景更改为透明或其他颜色

use*_*561 112 css html5 canvas three.js html5-canvas

我一直试图改变我的画布的默认背景颜色,从黑色到透明/任何其他颜色 - 但没有运气.

我的HTML:

<canvas id="canvasColor">
Run Code Online (Sandbox Code Playgroud)

我的CSS:

<style type="text/css">
#canvasColor {
 z-index: 998;
opacity:1;
background: red;
}
</style>
Run Code Online (Sandbox Code Playgroud)

正如您在下面的在线示例中所看到的,我在画布上附加了一些动画,所以不能只做一个不透明度:0; 在id上.

实时预览:http: //devsgs.com/preview/test/particle/

有任何想法如何覆盖默认黑色?

Joe*_*Joe 217

当我开始使用three.js时,我遇到了这个问题.这实际上是一个javascript问题.你目前有:

renderer.setClearColorHex( 0x000000, 1 );
Run Code Online (Sandbox Code Playgroud)

在你的threejsinit函数中.将其更改为:

renderer.setClearColorHex( 0xffffff, 1 );
Run Code Online (Sandbox Code Playgroud)

更新:感谢HdN8提供的更新解决方案:

renderer.setClearColor( 0xffffff, 0);
Run Code Online (Sandbox Code Playgroud)

更新#2:正如WestLangley在另一个类似的问题中指出的那样- 在与setClearColor()函数一起创建新的WebGLRenderer实例时,您现在必须使用以下代码:

var renderer = new THREE.WebGLRenderer({ alpha: true });
Run Code Online (Sandbox Code Playgroud)

更新#3: Mr.doob指出,因为r78您可以使用下面的代码来设置场景的背景颜色:

var scene = new THREE.Scene(); // initialising the scene
scene.background = new THREE.Color( 0xff0000 );
Run Code Online (Sandbox Code Playgroud)

  • 因为`r78`你可以简单地做`scene.background = new THREE.Color(0xff0000);` (7认同)
  • 很好,这也让我有点烦恼.我在three.js脚本中发现这个方法很快就被弃用了,请改用setClearColor(0xffffff,1). (5认同)
  • @mrdoob - 谢谢,我刚刚更新了答案. (2认同)
  • 2020 年:`scene.background = new THREE.Color( 0xff0000 );` 有效。 (2认同)

Pet*_*ich 18

对于透明度,这也是强制性的:renderer = new THREE.WebGLRenderer( { alpha: true } )通过带有three.js的透明背景


Yot*_*mer 18

一个完整的答案:(用r71测试)

要设置背景颜色,请使用:

renderer.setClearColor( 0xffffff ); // white background - replace ffffff with any hex color
Run Code Online (Sandbox Code Playgroud)

如果您想要透明背景,则必须先在渲染器中启用Alpha:

renderer = new THREE.WebGLRenderer( { alpha: true } ); // init like this
renderer.setClearColor( 0xffffff, 0 ); // second param is opacity, 0 => transparent
Run Code Online (Sandbox Code Playgroud)

查看文档以获取更多信息.


小智 5

在 2020 年,使用 r115 可以很好地解决这个问题:

const renderer = new THREE.WebGLRenderer({ alpha: true }); const scene = new THREE.Scene(); scene.background = null;