首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用补间最大值设置threeJS灯光颜色的动画

使用补间最大值设置threeJS灯光颜色的动画
EN

Stack Overflow用户
提问于 2020-02-27 10:04:11
回答 3查看 798关注 0票数 0

我想改变我的threeJS灯的颜色与补间最大时间线,但它似乎不起作用。这是我尝试过的。我做错了什么吗?

代码语言:javascript
复制
var light  = new THREE.HemisphereLight( "hsl(0,0%,87%);", 0xFFFFFF, 1);
var light2 = new THREE.PointLight( 0x69be94, 1, 15, 2 );
var light3 = new THREE.SpotLight( 0xFFFFE0, 1, 30, Math.PI/14, 1 );

...

var tl = new TimelineMax();
tl.to(light.color.setHSL, 1, { h : 1, s : 0.4, l : 0.58 });
tl.to(light2.color.setHex, 1, { hex: "#69BE94" });
tl.to(light3.color.setRGB, 1, { r: 105, g:190 ,b:148 }, 1,);
EN

Stack Overflow用户

发布于 2020-02-27 13:14:21

请注意,.setHSL, .setHex, & .setRGBall methods函数。你不能把一个方法作为TweenMax的第一个参数,它必须是一个属性。你需要这样做:

tl.to(light3.color, 1, {r: 0.3, g:0.7, b:0.5}, 1,);,以便时间线可以访问它。

此外,请记住,颜色.rgb重视are in the [0, 1] range,而不是[0, 255]。如果需要补间到特定的HSL值,只需使用临时颜色变量:

代码语言:javascript
复制
// Create temp variable to extract RGB values
var tempColor = new THREE.Color().setHSL(1, 0.4, 0.58);
tl.to(light.color, 1, { r: tempColor.r, g: tempColor.g, b: tempColor.b });

// Extract RGB values from tempColor again
tempColor.setHex(0x69BE94);
tl.to(light2.color, 1, { r: tempColor.r, g: tempColor.g, b: tempColor.b });

.setHex takes an integer, not a string

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60425284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档