I araç durdurma ışıkları için bir parlaklık etkisi yaratan ve her zaman kamera karşısında mümkün kılan bir gölgelendirici buldum ediyorum:Three.js GLSL peri daima ön kamera
uniform vec3 viewVector;
uniform float c;
uniform float p;
varying float intensity;
void main() {
vec3 vNormal = normalize(normalMatrix * normal);
vec3 vNormel = normalize(normalMatrix * -viewVector);
intensity = pow(c - dot(vNormal, vNormel), p);
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
Bu çözüm oldukça basit ve neredeyse çalışır. Kamera hareketine tepki verir ve harika olur. AMA bu eleman bir arabanın çocuğu. Aracın kendisi hareket ediyor ve doğrudan kameraya bakacak şekilde duran malzeme stoplarını döndürüyor.
SpritePlugin veya LensFlarePlugin'i kullanmak istemiyorum çünkü bu oyunu 20 fps kadar yavaşlatıyorlar, böylece bu hafif çözüme sadık kalacağım.
Sana tranformation matrisinden rotasyon verileri kaldırmak zorunda Doğrudan 3d için bir çözüm buldum ama sanırım Three.jsyılında bunun nasıl bilmiyorum yerine araba dönüşümle hesaplamalar ekleme bunun yerine bu gölgelendiriciyi basitleştirmenin bir yolu olmalı.
Bu gölgelendirici, malzemenin her zaman fotoğraf makinesine bakması için nasıl basitleştirilir?
Aşağıdaki bağlantıdan: "Küresel reklamcılık yapmak için, kimlik matrisini ayarlayarak tüm dönüşleri kaldırın". THREE.js içinde ShaderMaterial nasıl yapılır? http://www.geeks3d.com/20140807/billboarding-vertex-shader-glsl/
Burada sorun, gölgelendiriciye geçmeden önce ShaderMaterial'dan dönüşüm matrisini engellemeyi düşünüyorum, ancak emin değilim.
uniform vec3 glowColor;
varying float intensity;
void main() {
vec3 glow = glowColor * intensity;
gl_FragColor = vec4(glow, 1.0);
}
düzenlemek: Burada Muhtemelen alakasız ama
da parça gölgelendirici var ben zıt quaternion ayarlayarak ebeveynin rotasyon etkisi ortadan kaldırarak bir geçici çözüm bulundu şimdilik. Mükemmel değil ve CPU'da oluyor GPU
this.quaternion._x = -this.parent.quaternion._x;
this.quaternion._y = -this.parent.quaternion._y;
this.quaternion._z = -this.parent.quaternion._z;
this.quaternion._w = -this.parent.quaternion._w;
Evet, billboarding aradığım şeydir. Bu gece bir şey vereceğim! – Pawel