[프로세싱] 조트로프적인 것
14718 단어 processing컴퓨터 그래픽
적
별로 잘 보이지 않기 때문에, 틈새가 아니라 위에서 내려다보고 있습니다 (조트 로프가 아닌 기분이…)
프로그램
Zoetrope.java//Y軸回転
float rotateY = 0;
//画角
float fov = 3;
//回転速度
float speed = 0.01f;
//X軸回転
float rotateX = 0;
//円柱半径
float radius = 0;
//円柱高さ
float leng = 0;
//アニメーション番号
int aniNum = 0;
//貼り付ける画像
PImage tex;
void setup() {
size(1600, 800, P3D);
frameRate(30);
tex = loadImage("Zoetrope.png");
}
void draw() {
background(0);
lights();
perspective(PI/fov, (float)width/height, 10, 1000);
//操作説明
textSize(25);
text(" A :accel\n D :decelerate\n W :Just speed\n S :Stop\n Click :Zoom",
0, height-250);
translate(width/2, height/2+100, 100);
noStroke();
fill(255);
rotateX(rotateX);
rotateY(rotateY);
Cylinder(leng, radius);
rotateY += speed;
//アニメーションスウィッチ
switch(aniNum) {
case 0:
radius++;
aniNum++;
break;
case 1:
leng++;
if (leng >= 250) aniNum++;
break;
case 2:
radius ++;
if (radius >= 150) aniNum++;
break;
case 3:
rotateX -= PI/180;
if (rotateX <= -PI/4) aniNum++;
break;
}
}
//円柱メソッド
// Cylinder( 長さ , 半径 )
void Cylinder(float leng, float radius) {
float x, y, z;
pushMatrix();
//底面
beginShape(TRIANGLE_FAN);
y = leng / 2;
vertex(0, y, 0);
for (int deg = 0; deg <= 360; deg += 2) {
x = cos(radians(deg)) * radius;
z = sin(radians(deg)) * radius;
vertex(x, y, z);
}
endShape();
//側面
beginShape(QUAD_STRIP);
texture(tex);
textureMode(NORMAL);
for (int deg = 0; deg <= 360; deg += 1) {
x = cos(radians(deg)) * radius;
y = -leng / 2;
z = sin(radians(deg)) * radius;
normal(x, 0, z);
vertex(x, y, z, deg/360f, 0);
x = cos(radians(deg)) * radius;
y = leng / 2;
z = sin(radians(deg)) * radius;
normal(x, 0, z);
vertex(x, y, z, deg/360f, 1);
}
endShape();
popMatrix();
}
void keyPressed() {
//a で加速 d で減速 w でいい感じの速度 d で停止
if (key == 'a') speed += 0.01f;
else if (key == 'd') speed -= 0.02f;
else if (key == 'w') speed = 0.63f;
else if (key == 's') speed = 0;
}
void mousePressed() {
//画角切り替え
if (mouseButton == LEFT) {
fov = (fov+6)%12; //fovの値を3と9交互にする式
}
}
사용 이미지
"Zoetrope.png"
Reference
이 문제에 관하여([프로세싱] 조트로프적인 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/NekoCan/items/a4405eb5abcb5d2021db
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Zoetrope.java
//Y軸回転
float rotateY = 0;
//画角
float fov = 3;
//回転速度
float speed = 0.01f;
//X軸回転
float rotateX = 0;
//円柱半径
float radius = 0;
//円柱高さ
float leng = 0;
//アニメーション番号
int aniNum = 0;
//貼り付ける画像
PImage tex;
void setup() {
size(1600, 800, P3D);
frameRate(30);
tex = loadImage("Zoetrope.png");
}
void draw() {
background(0);
lights();
perspective(PI/fov, (float)width/height, 10, 1000);
//操作説明
textSize(25);
text(" A :accel\n D :decelerate\n W :Just speed\n S :Stop\n Click :Zoom",
0, height-250);
translate(width/2, height/2+100, 100);
noStroke();
fill(255);
rotateX(rotateX);
rotateY(rotateY);
Cylinder(leng, radius);
rotateY += speed;
//アニメーションスウィッチ
switch(aniNum) {
case 0:
radius++;
aniNum++;
break;
case 1:
leng++;
if (leng >= 250) aniNum++;
break;
case 2:
radius ++;
if (radius >= 150) aniNum++;
break;
case 3:
rotateX -= PI/180;
if (rotateX <= -PI/4) aniNum++;
break;
}
}
//円柱メソッド
// Cylinder( 長さ , 半径 )
void Cylinder(float leng, float radius) {
float x, y, z;
pushMatrix();
//底面
beginShape(TRIANGLE_FAN);
y = leng / 2;
vertex(0, y, 0);
for (int deg = 0; deg <= 360; deg += 2) {
x = cos(radians(deg)) * radius;
z = sin(radians(deg)) * radius;
vertex(x, y, z);
}
endShape();
//側面
beginShape(QUAD_STRIP);
texture(tex);
textureMode(NORMAL);
for (int deg = 0; deg <= 360; deg += 1) {
x = cos(radians(deg)) * radius;
y = -leng / 2;
z = sin(radians(deg)) * radius;
normal(x, 0, z);
vertex(x, y, z, deg/360f, 0);
x = cos(radians(deg)) * radius;
y = leng / 2;
z = sin(radians(deg)) * radius;
normal(x, 0, z);
vertex(x, y, z, deg/360f, 1);
}
endShape();
popMatrix();
}
void keyPressed() {
//a で加速 d で減速 w でいい感じの速度 d で停止
if (key == 'a') speed += 0.01f;
else if (key == 'd') speed -= 0.02f;
else if (key == 'w') speed = 0.63f;
else if (key == 's') speed = 0;
}
void mousePressed() {
//画角切り替え
if (mouseButton == LEFT) {
fov = (fov+6)%12; //fovの値を3と9交互にする式
}
}
사용 이미지
"Zoetrope.png"
Reference
이 문제에 관하여([프로세싱] 조트로프적인 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/NekoCan/items/a4405eb5abcb5d2021db
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([프로세싱] 조트로프적인 것), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/NekoCan/items/a4405eb5abcb5d2021db텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)