Paso 2: Cubo Hola: parpadeo de un voxel
Parpadeando un voxel único y es "Hola mundo" de programas volumétricos. Estoy pegando todo el código a continuación y voy a ir a través de él línea por línea, pero antes de eso, quiero pasar algún tiempo con la función más importante en todo el asunto:
setVoxel (PVector posición, color col)
setVoxel convierte un determinado voxel un color particular. La posición PVector es representa un (x, y, z) punto y la función preocupa redondeo las coordenadas a un valor entero. Si el voxel está fuera el volumen de la pantalla, la función simplemente ignora. Esta función es la de todos los gráficos que veremos, así que es bueno para familiarizarse con él.
Aquí está el resto del código, línea por línea:
import L3D.*; L3D cube; //define a cube object to draw into PVector voxel=new PVector(3,3,3); //this is the voxel that we'll blink. The voxels range from (0,0,0) to (7,7,7)
Empiece por importar la biblioteca y definir un objeto L3D, cubo. Cubo tiene todos los datos volumétricos para el cubo del LED, manijas, dibujar la gráfica de cubo en simulación y también puede transmitir datos por wifi L3D los cubos de la red local.
void setup(){ size(displayWidth, displayHeight, P3D); cube=new L3D(this); //initialize the cube object cube.enableDrawing(); //draw the virtual cube cube.enableMulticastStreaming(); //stream the data over UDP to any L3D cubes that are listening on the local network cube.enablePoseCube(); //automatically centers the cube and allows the user to rotate it with the mouse }
En setup(), declaramos los gráficos que P3D gráficos. Esto es importante si vamos a dibujar el simulador del cubo--todo lo que es en 3D, y tenemos que configurar nuestro contexto de dibujo como algo que puede manejar gráficos 3D.
cubo = new L3D(this); -Esto crea un nuevo cubo de L3D. Por defecto, los cubos son de 8 x 8 x 8 voxels
cube.enableDrawing(); --Esto será dibujar el cubo en la ventana de dibujo centrada alrededor del punto (0,0,0) del contexto gráfico, en el final de la función draw()
cube.enableMulticastStreaming(); --toma todos los datos del cubo y envía hacia fuera como un paquete de multidifusión de UDP a su red local entera. Si tienes un cubo de L3D configurado para escuchar en la red, se mostrará lo que está mostrando la pantalla.
cube.enablePoseCube() cubo del simulador las posiciones en la pantalla y le permite rotar el cubo en 3D, arrastrando el ratón. Si no llama a enablePoseCube, la biblioteca será dibujar el cubo en el punto (0,0,0) en el contexto de los gráficos.
void draw(){ background(0); //set the screen's background to black cube.background(0); //set all the voxels in the cube to black= if ((frameCount%20)>=10) //turn the LED on for ten frames, then off for ten frames cube.setVoxel(voxel, color(255, 0, 0)); }
Cube.Background(0) establece todos los vóxeles en el cubo negro. Si quería que el fondo sea de otro color, podria especificar con otro tipo de datos de color . Si quería convertir el fondo verde, debería escribir:
Cube.Background(color(0,255,0));
A continuación, quiero parpadear el voxel. Proceso posee un contador llamado frameCount que aumenta cada vez dibujar un marco. Por defecto, un boceto de proceso actualiza la pantalla 60 veces por segundo. La línea de
Si ((frameCount%20) > = 10)
Juegos de cubo hasta flash tres veces segundo. Estoy mirando frameCount modulo veinte, que siempre tendrá un valor de 0-19. Si frameCount % 20 es menos de 10, la instrucción if se evalúa como false, y no pasa nada--el voxel se queda negro. Si el frameCount % 20 es entre 10 y 19, el código establece el voxel en (3,3,3) al rojo. frameCount % 20 mantiene bucle alrededor, y el voxel y parpadea.
Sé que es mucho, pero no lo sudor si no todo sin embargo. Sólo tire de abierto uno de los ejemplos de la librería de procesamiento y comenzar jugando con él. Usted podrá recogerlo con la suficiente rapidez.