मेरे पास इसका एक संस्करण है जो एचएसवी स्पेस में एक ट्विन बनाता है। यह सही नहीं है, क्योंकि रास्ते में कई अलग-अलग रंग दिखाई दे सकते हैं।
Three.js में THREE.Color
से एचएसवी मान प्राप्त करने के लिए कोई विधि शामिल नहीं है। तो, एक जोड़ें:
THREE.Color.prototype.getHSV = function()
{
var rr, gg, bb,
h, s,
r = this.r,
g = this.g,
b = this.b,
v = Math.max(r, g, b),
diff = v - Math.min(r, g, b),
diffc = function(c)
{
return (v - c)/6/diff + 1/2;
};
if (diff == 0) {
h = s = 0;
} else {
s = diff/v;
rr = diffc(r);
gg = diffc(g);
bb = diffc(b);
if (r === v) {
h = bb - gg;
} else if (g === v) {
h = (1/3) + rr - bb;
} else if (b === v) {
h = (2/3) + gg - rr;
}
if (h < 0) {
h += 1;
} else if (h > 1) {
h -= 1;
}
}
return {
h: h,
s: s,
v: v
};
};
फिर, ट्वीन अपेक्षाकृत स्पष्ट है:
new TWEEN.Tween(mesh.material.color.getHSV())
.to({h: h, s: s, v: v}, 200)
.easing(TWEEN.Easing.Quartic.In)
.onUpdate(
function()
{
mesh.material.color.setHSV(this.h, this.s, this.v);
}
)
.start();
मैं एक अधिक perceptually प्राकृतिक संक्रमण की सुनने के लिए दिलचस्पी होगी।
स्रोत
2012-09-20 01:14:21
इसके बारे में क्या करना है, लेकिन इसके बजाय आरजीबी के साथ क्या? 'नया TWEEN.Tween (mesh.material.color) .to ({r: 1, g: 0, b: 0}, 200) .start()' – mrdoob
@mrdoob, आरजीबी स्पेस के भीतर रैखिक मिश्रण के साथ मेरे पिछले प्रयोग बदसूरत मध्यवर्ती रंग पैदा करने के लिए। मैं फिर से कोशिश करूँगा। अभी के लिए, उपरोक्त काफी अच्छी तरह से काम करता प्रतीत होता है। –
आह। मैने आपको गलत समझा। हाँ। आपके दृष्टिकोण की तरह लगता है अच्छा है। – mrdoob