[英]In Three.js Is there a way to produce a trail that slowly fades over time?
我希望產生與以下示例非常相似的效果: https : //threejs.org/examples/?q=trails#webgl_trails
然而,我想讓舊的軌跡隨着時間的推移逐漸消失在背景中——而不是僅僅停留在一個越來越凌亂的屏幕上。
似乎以下代碼將允許您在不清除之前的幀的情況下繪制它們:
renderer = new THREE.WebGLRenderer( { preserveDrawingBuffer: true } ); renderer.autoClearColor = false;
但我不確定如何讓每一幀淡入背景,因為在頂部繪制了新幀。 似乎用有點透明的顏色在屏幕上繪畫會起作用,但我不確定如何處理。
您可以輕松地采用上面顯示的示例,並創建一個位於相機正前方的非常微弱的黑色平面:
// Make highly-transparent plane
var fadeMaterial = new THREE.MeshBasicMaterial({
color: 0x000000,
transparent: true,
opacity: 0.01
});
var fadePlane = new THREE.PlaneBufferGeometry(1, 1);
var fadeMesh = new THREE.Mesh(fadePlane, fadeMaterial);
// Create Object3D to hold camera and transparent plane
var camGroup = new THREE.Object3D();
var camera = new THREE.PerspectiveCamera();
camGroup.add(camera);
camGroup.add(fadeMesh);
// Put plane in front of camera
fadeMesh.position.z = -0.1;
// Make plane render before particles
fadeMesh.renderOrder = -1;
// Add camGroup to scene
scene.add(camGroup);
這將確保每次渲染場景時,它都會緩慢地將先前渲染的粒子淡化為黑色。 你需要使用的透明度發揮fadeMaterial
和位置的fadeMesh
以獲得所需的效果。
renderOrder = -1;
確保首先渲染平面(淡出之前的粒子),然后渲染粒子,以避免覆蓋最新的粒子。
現在有一個使用后處理 EffectComposer 和 AfterImagePass 的示例。
https://threejs.org/examples/webgl_postprocessing_afterimage.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.