如何绘制褪色的物体轨迹?无后台操作
How to draw a fading object trail? Without background manipulation
我有一个简单的椭圆,在屏幕上移动,有没有我可以实现的简单代码让这个椭圆在它后面画一条轨迹,它的 alpha 会随着时间的推移在一定程度上淡化?我仍然希望轨迹最后可见,但不如投射椭圆亮。
假设椭圆是唯一被绘制的东西,那么有一个简单的解决方案,即不在每一帧上绘制完全不透明的背景,而是绘制一个半透明的背景:
function setup() {
createCanvas(windowWidth, windowHeight);
}
function draw() {
background(0, 35);
ellipse(mouseX, mouseY, 20, 20);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
但是,有一些注意事项,即对于某些 colors/transparency 级别,由于一些奇怪的 alpha 混合数学异常,您将留下永久的轨迹“幽灵”。
你也可以这样做:
let positions = [];
function draw(){
positions.push(mouseX);
positions.push(mouseY);
for(let i in positions){
let x = positions[i];
let y = positions[i + 1];
fill(255, 255 - i * 10); noStroke();
ellipse(mouseX, mouseY, x, y)
}
if(positions.length > 20){
positions.shift();
positions.shift();
}
}
我有一个简单的椭圆,在屏幕上移动,有没有我可以实现的简单代码让这个椭圆在它后面画一条轨迹,它的 alpha 会随着时间的推移在一定程度上淡化?我仍然希望轨迹最后可见,但不如投射椭圆亮。
假设椭圆是唯一被绘制的东西,那么有一个简单的解决方案,即不在每一帧上绘制完全不透明的背景,而是绘制一个半透明的背景:
function setup() {
createCanvas(windowWidth, windowHeight);
}
function draw() {
background(0, 35);
ellipse(mouseX, mouseY, 20, 20);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
但是,有一些注意事项,即对于某些 colors/transparency 级别,由于一些奇怪的 alpha 混合数学异常,您将留下永久的轨迹“幽灵”。
你也可以这样做:
let positions = [];
function draw(){
positions.push(mouseX);
positions.push(mouseY);
for(let i in positions){
let x = positions[i];
let y = positions[i + 1];
fill(255, 255 - i * 10); noStroke();
ellipse(mouseX, mouseY, x, y)
}
if(positions.length > 20){
positions.shift();
positions.shift();
}
}