js -如何动态改变对象的不透明度
three.js - How can I dynamically change object's opacity?
这是我的对象:
var object = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial( { map: THREE.ImageUtils.loadTexture( "image.png" ) } ) );
object.position.set(2, 3, 1.5);
现在我在init()中创建了这个对象;函数,我可以直接进入对象并更改其位置,如下所示:
object.position.x = 15;
现在的问题是我如何改变纹理的不透明度??
谢谢:-)
THREE.MeshLambertMaterial
扩展THREE.Material
,这意味着它继承了opacity
属性,所以你所需要做的就是访问对象上的材料,并改变材料的不透明度:
object.materials[0].opacity = 1 + Math.sin(new Date().getTime() * .0025);//or any other value you like
还请注意,材料必须将其transparent
属性设置为true。
object.materials[0].transparent = true;
(感谢Drew和Dois指出这一点)
属性现在只是material
:
// enable transparency
object.material.transparent = true;
// set opacity to 50%
object.material.opacity = 0.5;
var map = THREE.ImageUtils.loadTexture( myJSONObject[i].url );
var material = new THREE.MeshLambertMaterial( { map: map, transparent: true } );
var object = new THREE.Mesh( geometry, material );
material.opacity = 0.6;
我知道这个问题很老了,但我想从我使用的情况下给出我的答案,以防有人需要它。对于three.js,我使用Greensock的TweenMax/TweenLite进行渐变。有了它,我可以对任何物体的任何属性进行补间,并且它运行得很顺利。在这里查看图书馆。我所需要做的就是:
TweenLite.to(object, duration, properties);
,其中持续时间以秒为单位,属性以对象为单位。这个问题的"陷阱"是,特别是在使用three.js时,要确保您使用特定的object参数。例如,根据这个问题,如果你要改变一个网格的不透明度,你不能做
TweenLite.to(mesh, 2, {material.opacity: 0});
更确切地说,你需要更具体地写
TweenLite.to(mesh.material, 2, {opacity: 0});
我希望这能帮助到别人。补间真的很棒!
相关文章:
- 改变<svg>对象's路径
- 为什么日期对象的时间没有改变?我怎样才能改变它
- 为什么第二个对象的值没有改变
- 触发标准“;改变“;表单对象上的事件-由其上的任何侦听器拾取
- Javascript排序的数组会改变窗口对象,但在遍历它时不会改变
- 为什么函数中改变的对象会改变它们在内存中指向的内容,但有时会创建一个新的内存对象
- 如何改变对象's html
- js -如何动态改变对象的不透明度
- 改变(对象).Prototype vs. [object]'s嵌套函数
- 如何改变对象属性值从观看相同的对象
- 如何使用单选按钮改变对象的材质
- 如何在不复制的情况下改变对象
- 淘汰赛不会改变对象数组中的复选框状态
- 改变对象键的顺序…
- 为什么改变对象的[[prototype]]会影响性能?
- Phantomjs改变对象属性内页评估
- 为什么AngularJS要改变对象的值
- Angular在作用域中改变对象不会改变视图
- 改变对象会引起所有对象的改变
- 为什么Microsoft IE在插入/删除时改变对象的键顺序?