是否可以将多个灯光(例如pointLights)存储到阵列中? Processing将它们视为内置方法,那么将它们作为对象进行转换的方法呢?
示例:
for (int i = 0; i < nLight; i++) {
pointLight((int)(rnd.nextDouble() *255), (int)(rnd.nextDouble() *255), (int)(rnd.nextDouble() *255), (int)(rnd.nextDouble() *1000-1000),(int)(rnd.nextDouble() *1000-1000),(int)(rnd.nextDouble() *1000-1000));
lights.add(light);
}
答案 0 :(得分:0)
您可以创建一个类,它封装了绘制灯光所需的所有信息。像这样:
class Light{
float v1;
float v2;
float v3;
float x;
float y;
float z;
public Light(float v1, float v2, float v3, float x, float y, float z){
this.v1 = v1;
this.v2 = v2;
this.v3 = v3;
this.x = x;
this.y = y;
this.z = z;
}
public void draw(){
pointLight(v1, v2, v3, x, y, z);
}
}
然后要使用该类,您只需创建一个ArrayList
Light
个实例,然后迭代这些实例以绘制灯光:
ArrayList<Light> lights = new ArrayList<Light>();
void setup(){
size(1000, 1000);
for (int i = 0; i < nLight; i++) {
lights.add(new Light(random(255), random(255), random(255), random(-1000, 1000), random(-1000, 1000), random(-1000, 1000)));
}
}
void draw(){
background(0);
for(Light light : lights){
light.draw();
}
}