Saturday, March 06, 2010

PyOpenGLでティーポットを描画する

PyOpenGLでティーポットを描画するには、以下のコードを実行します。


#coding:utf-8
import sys
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

def display():
glEnable(GL_LIGHTING)
glEnable(GL_LIGHT0)
glEnable(GL_DEPTH_TEST)
glEnable(GL_COLOR_MATERIAL)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glPushMatrix()
gluLookAt(0,4,10, 0,0,0, 0,1,0)
glRotatef(-40, 0.0, 1.0, 0.0)
glColor3f(float(0xbb)/0xff, float(0xdd)/0xff, 0xff/0xff)
glutSolidTeapot(2.5)
glPopMatrix()
glFlush()

def reshape(w,h):
glViewport(0, 0, w, h)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(45, w/h, 1, 100)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()

glutInit(sys.argv)
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH)
glutInitWindowSize(200, 200)
glutCreateWindow('pyopengl')
glutReshapeFunc(reshape)
glutDisplayFunc(display)
glutMainLoop()


出力画像


動作環境
python2.6.4, PyOpenGL3.0.0

Friday, March 05, 2010

Java2DとJava Image Filters(pixels)を使用して画像にメディアンフィルタをかける

Java2DとJava Image Filters(pixels)を使用して画像にメディアンフィルタをかけるには、以下のコードを実行します。


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import com.jhlabs.image.*;

public class Java2DTest70
{
public static void main(String args[])
throws Exception
{
/* 画像にメディアンフィルタをかける */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
MedianFilter mf = new MedianFilter();

BufferedImage img2 = mf.filter(img, null);
img2 = mf.filter(img2, null);
ImageIO.write(img2, "png", new File("sample1971a.png"));
}
}


元画像(sf2.jpg)


出力画像(sample1971a.png)
Java2DとJava Image Filtersでメディアンフィルタを適用した画像

関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.net でのプロジェクトページ
https://pixels.dev.java.net/

Thursday, March 04, 2010

Java2DとJava Image Filters(pixels)を使用してグラデーションのかかったモノトーン画像に変換する

Java2DとJava Image Filters(pixels)を使用してグラデーションのかかったモノトーン画像に変換するには、以下のコードを実行します。


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import com.jhlabs.composite.*;
import com.jhlabs.image.*;

public class Java2DTest69
{
public static void main(String args[])
throws Exception
{
/* 画像を指定した色のグラデーションのかかったモノトーン画像に変換 */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
BufferedImage imga = new BufferedImage(
img.getWidth(), img.getHeight(),
BufferedImage.TYPE_INT_ARGB
);
GrayscaleFilter gf = new GrayscaleFilter();
BufferedImage img2 = gf.filter(img, imga);

BufferedImage img3 = new BufferedImage(
img.getWidth(), img.getHeight(),
BufferedImage.TYPE_INT_ARGB
);
GradientFilter grf = new GradientFilter(
new Point(0, 0), new Point(0, img.getHeight()),
0xff3070a0, 0xffffff10,
false, GradientFilter.LINEAR,
GradientFilter.INT_SMOOTH);

BufferedImage img4 = grf.filter(img3, null);

CompositeFilter cf = new CompositeFilter(
MiscComposite.getInstance(MiscComposite.BLEND, 0.5f));

BufferedImage img5 = cf.filter(img2, img4);
ImageIO.write(img5, "png", new File("sample1970a.png"));
}
}


元画像(sf2.jpg)


出力画像(sample1970a.png)


関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.net でのプロジェクトページ
https://pixels.dev.java.net/

Wednesday, March 03, 2010

Java2DとJava Image Filters(pixels)を使用して円錐グラデーションを描画する

Java2DとJava Image Filters(pixels)を使用して円錐グラデーションを描画するには、以下のコードを実行します。


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import com.jhlabs.composite.*;
import com.jhlabs.image.*;

public class Java2DTest67
{
public static void main(String args[])
throws Exception
{
/* 円錐グラデーション画像を作成する */
BufferedImage img = new BufferedImage(
300, 300,
BufferedImage.TYPE_INT_ARGB
);
GradientFilter ff = new GradientFilter(
new Point(150, 150), new Point(300, 300),
0xff7799dd, 0xffffffff,
false, GradientFilter.BICONICAL,
GradientFilter.INT_SMOOTH);

BufferedImage img2 = ff.filter(img, null);
ImageIO.write(img2, "png", new File("sample1968a.png"));
}
}


出力画像(sample1968a.png)
Java2DとJava Image Filtersを使用して描画した円錐グラデーション

関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.net でのプロジェクトページ
https://pixels.dev.java.net/

Tuesday, March 02, 2010

Java2DとJava Image Filters(pixels)を使用して放射グラデーションを描画する

Java2DとJava Image Filters(pixels)を使用して放射グラデーションを描画するには、以下のコードを実行します。


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import com.jhlabs.composite.*;
import com.jhlabs.image.*;

public class Java2DTest66
{
public static void main(String args[])
throws Exception
{
/* 放射グラデーション画像を作成する */
BufferedImage img = new BufferedImage(
300, 300,
BufferedImage.TYPE_INT_ARGB
);
GradientFilter ff = new GradientFilter(
new Point(100, 100), new Point(200, 100),
0xff7799dd, 0xffffffff,
false, GradientFilter.RADIAL,
GradientFilter.INT_SMOOTH);

BufferedImage img2 = ff.filter(img, null);
ImageIO.write(img2, "png", new File("sample1967a.png"));
}
}


出力画像(sample1967a.png)
Java2DとJava Image Filtersを使用して描画した放射グラデーション

関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.net でのプロジェクトページ
https://pixels.dev.java.net/

Monday, March 01, 2010

Java2DとJava Image Filters(pixels)を使用してグラデーション画像を作成する

Java2DとJava Image Filters(pixels)を使用してグラデーション画像を作成するには、以下のコードを実行します。


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import com.jhlabs.composite.*;
import com.jhlabs.image.*;

public class Java2DTest65
{
public static void main(String args[])
throws Exception
{
/* グラデーション画像を作成する */
BufferedImage img = new BufferedImage(
300, 300,
BufferedImage.TYPE_INT_ARGB
);
GradientFilter ff = new GradientFilter(
new Point(0, 0), new Point(200, 100),
0xff7799dd, 0xffffffff,
false, GradientFilter.LINEAR,
GradientFilter.INT_SMOOTH);

BufferedImage img2 = ff.filter(img, null);
ImageIO.write(img2, "png", new File("sample1966a.png"));
}
}


出力画像(sample1966a.png)


関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.net でのプロジェクトページ
https://pixels.dev.java.net/

Sunday, February 28, 2010

Java2DとJava Image Filters(pixels)を使用して指定した色のモノトーン画像に変換する

Java2DとJava Image Filters(pixels)を使用して指定した色のモノトーン画像に変換するには、以下のコードを実行します。


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import com.jhlabs.composite.*;
import com.jhlabs.image.*;

public class Java2DTest64
{
public static void main(String args[])
throws Exception
{
/* 画像を指定した色のモノトーンのイメージに変換する */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
BufferedImage imga = new BufferedImage(
img.getWidth(), img.getHeight(),
BufferedImage.TYPE_INT_ARGB
);
GrayscaleFilter gf = new GrayscaleFilter();
BufferedImage img2 = gf.filter(img, imga);

BufferedImage img3 = new BufferedImage(
img.getWidth(), img.getHeight(),
BufferedImage.TYPE_INT_ARGB
);
FillFilter ff = new FillFilter(0xff7799dd);
BufferedImage img4 = ff.filter(img3, null);

CompositeFilter cf = new CompositeFilter(
MiscComposite.getInstance(MiscComposite.BLEND, 0.5f));

BufferedImage img5 = cf.filter(img2, img4);
ImageIO.write(img5, "png", new File("sample1965a.png"));
}
}


元画像(sf2.jpg)


出力画像(sample1965a.png)


関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.net でのプロジェクトページ
https://pixels.dev.java.net/

Saturday, February 27, 2010

Java2DとJava Image Filters(pixels)を使用して画像をグレースケールに変換する

Java2DとJava Image Filters(pixels)を使用して画像をグレースケールに変換するには、以下のコードを実行します。


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import com.jhlabs.image.*;

public class Java2DTest63
{
public static void main(String args[])
throws Exception
{
/* 画像をグレースケールに変換する */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
GrayscaleFilter gf = new GrayscaleFilter();

BufferedImage img2 = gf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample1964a.jpg"));
}
}


元画像(sf2.jpg)


出力画像(sample1964a.jpg)


関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.net でのプロジェクトページ
https://pixels.dev.java.net/

Friday, February 26, 2010

Java2DとJava Image Filters(pixels)を使用して画像を絵画っぽく変換する

Java2DとJava Image Filters(pixels)を使用して画像を絵画っぽく変換するには、以下のコードを実行します。


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import com.jhlabs.image.*;

public class Java2DTest62
{
public static void main(String args[])
throws Exception
{
/* 画像を絵画っぽく変換する */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
DiffuseFilter df = new DiffuseFilter();
/* スケール */
df.setScale(3);

OilFilter of = new OilFilter();
/* ピクセルでの効果範囲 */
of.setRange(2);
/* 効果のレベル */
of.setLevels(3);

// 複合フィルタ
CompoundFilter cf = new CompoundFilter(of, df);

BufferedImage img2 = cf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample1963a.jpg"));
}
}


元画像(sf2.jpg)


出力画像(sample1963a.jpg)


関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.net でのプロジェクトページ
https://pixels.dev.java.net/

Thursday, February 25, 2010

processingtとJava Image Filters(pixels)で画像が水面のようにゆらめくアニメーションを表示する

processingとJava Image Filters(pixels)で画像が水面のようにゆらめくアニメーションを表示するには、以下のコードを実行します。Java Image Filtersはhttps://pixels.dev.java.net/servlets/ProjectDocumentListから pixels-core-2.1.3-SNAPSHOT.jarをダウンロードしてSketchのフォルダのcodeサブフォルダに配置するか、 Sketch->Add FilesメニューからSketchに追加します。


PImage img;
SwimFilter sf;
void setup(){
// キャンバスサイズ
img = loadImage("sf2.jpg");
size(img.width, img.height);
// 水面のようなゆらぎ効果をつける
sf = new SwimFilter();
// 効果の量
sf.setAmount(5f);
// スケール
sf.setScale(32f);
// 引き伸ばし
sf.setStretch(5f);
// アングル
sf.setAngle(10f/180f*ImageMath.PI);
// 乱れ
sf.setTurbulence(1f);
}
void draw(){
// 時間
sf.setTime(frameCount/10f);
PImage img2 = new PImage(sf.filter((BufferedImage)img.getImage(), null));
image(img2, 0, 0);
}


元画像(sf2.jpg)


出力画像


動作環境
processing 1.0.9

〇関連項目
・Processingをインストールした仮想マシンを構築するには、以下のページを参照してください。
https://serverarekore.blogspot.com/search/label/Processing

Processing とJava Image Filters(pixels)を使用して画像に水面のようなゆらぎ効果をつける

・Processingに関する他の記事は、こちらを参照してください。

Wednesday, February 24, 2010

processingで3ds形式のモデルを読み込んで表示する

processingで3ds形式のモデルを読み込んで表示するには、以下のコードを実行します。3ds形式のモデルを読み込むには、MRI3DSを使用します。mri3ds.jarをcodeサブディレクトリに配置するか、Sketch->Add FilesメニューからSketchに追加します。

MRI3DSのサイト
http://www.pixelnerve.com/processing/libraries/mri3ds/


import com.sun.opengl.util.*;
import javax.media.opengl.*;
import processing.opengl.*;
import mri.*;

V3dsScene vscene;
GL gl;
void setup()
{
size(400, 300, OPENGL);
ambientLight(255, 255, 255, 0, 50, -400);
gl = ((PGraphicsOpenGL)g).beginGL();
gl.glClearColor(0.0, 0.0, 0.0, 0.0);
vscene = new V3dsScene( this, "STS.3ds" );
}

void draw()
{
gl=((PGraphicsOpenGL)g).beginGL();
gl.glEnable(GL.GL_LIGHTING);
gl.glEnable(GL.GL_LIGHT0);
gl.glDisable(GL.GL_CULL_FACE);
gl.glEnable(GL.GL_NORMALIZE);
gl.glEnable(gl.GL_COLOR_MATERIAL);
gl.glClear(GL.GL_COLOR_BUFFER_BIT |GL.GL_DEPTH_BUFFER_BIT );
((PGraphicsOpenGL)g).endGL();
translate(200, 150, 0);
scale(20, 20, 20);
rotateY(2*PI*frameCount/360);
rotateX(2*PI*frameCount/360/10);
vscene.draw();
}


出力画像


関連情報
モデルデータ
http://www.nasa.gov/multimedia/3d_resources/assets/sts.html

動作環境
processing 1.0.9

〇関連項目
・Processingをインストールした仮想マシンを構築するには、以下のページを参照してください。
https://serverarekore.blogspot.com/search/label/Processing

・Processingに関する他の記事は、こちらを参照してください。

Tuesday, February 23, 2010

processingでフォグを使用する

processingでフォグを使用するには、以下のコードを実行します。


import com.sun.opengl.util.*;
import javax.media.opengl.*; 
import processing.opengl.*;
GL gl;
GLUT glut;
void setup()
{
  size(400, 300, OPENGL);
  ambientLight(128, 128, 128, 0, 0, 300);
//  lights();

  gl = ((PGraphicsOpenGL)g).beginGL();
  glut = new GLUT();
  gl.glClearColor(0.0, 0.0, 0.0, 0.0);
}

void draw()
{
  gl=((PGraphicsOpenGL)g).beginGL();
  gl.glEnable(GL.GL_LIGHTING);
  gl.glEnable(GL.GL_LIGHT0);
  gl.glEnable(GL.GL_CULL_FACE);
  gl.glEnable(GL.GL_NORMALIZE);
  // フォグの設定
  float fog[]={0.1f,0.1f,0.1f,1.0f};
  gl.glFogfv(GL.GL_FOG_COLOR,fog,0);
  gl.glFogi(GL.GL_FOG_MODE,GL.GL_EXP);
  gl.glFogf(GL.GL_FOG_DENSITY, 0.003f);
  gl.glFogf(GL.GL_FOG_START, 0.0f);
  gl.glFogf(GL.GL_FOG_END,800.0f);
  gl.glEnable(GL.GL_FOG);

  gl.glClear(GL.GL_COLOR_BUFFER_BIT |GL.GL_DEPTH_BUFFER_BIT );

  gl.glTranslatef(width/2, height/2+50, -50);
  gl.glPushMatrix();

  gl.glRotatef(-45f, 1.0f, 0.0f, 0.0f);
//  gl.glRotatef(frameCount*3, 0.0f, 1.0f, 0.0f);
  gl.glTranslatef(-120, 0, -480);
  // 面の色を設定
  gl.glColor3f(
    (float)0x77/(float)0xff, 
    (float)0x99/(float)0xff, 
    (float)0xff/(float)0xff
  );
  // 球を描画
  for(int lz=0;lz<20;lz++){
    for(int lx=0;lx<10;lx++){
      gl.glPushMatrix();
      gl.glTranslatef(lx*30, 0, lz*30);
      glut.glutSolidSphere(10f, 16, 16);
      gl.glPopMatrix();
    }
  }
  gl.glPopMatrix();
  ((PGraphicsOpenGL)g).endGL();
}


出力画像


動作環境
processing 1.0.9

〇関連項目
・Processingをインストールした仮想マシンを構築するには、以下のページを参照してください。
https://serverarekore.blogspot.com/search/label/Processing

・Processingに関する他の記事は、こちらを参照してください。

Monday, February 22, 2010

processingとJava Image Filters(pixels)を使用して地形っぽい画像を生成する

processingとJava Image Filters(pixels)を使用して地形っぽい画像を生成するには、以下のコードを実行します。Java Image Filtersはhttps://pixels.dev.java.net/servlets/ProjectDocumentListから pixels-core-2.1.3-SNAPSHOT.jarをダウンロードしてSketchのフォルダのcodeサブフォルダに配置するか、 Sketch->Add FilesメニューからSketchに追加します。


import processing.opengl.*;

PImage img2;
int ix = 200;
int iy = 200;

void setup()
{
// キャンバスサイズ
size(400, 300, OPENGL);
PImage img = new PImage(ix, iy);
// プラズマ画像を生成する
PlasmaFilter pf = new PlasmaFilter();
// 乱れを設定する(0-10)
pf.setTurbulence(1.2f);
// seed設定
//pf.setSeed(1318);
img2 = new PImage(pf.filter((BufferedImage)img.getImage(), null));
img2.loadPixels();
}

void draw()
{
background(0);
lights();
ambientLight(128, 128, 128, 0, -1000, 300);
translate(width/2, height/2);
rotateX(radians(-30));
rotateY(radians(frameCount));
noStroke();
float ox = -400;
float oy = -100;
float oz = -400;
int us = 10;
for(int lx=0;lx<ix-1;lx++){
for(int lz=0;lz<iy-1;lz++){

beginShape(TRIANGLES);
float cx = (lx+0.5)*us;
float cz = (lz+0.5)*us;
float cy = (red(img2.pixels[lz*ix+lx]) +
red(img2.pixels[lz*ix+(lx+1)]) +
red(img2.pixels[(lz+1)*ix+(lx+1)]) +
red(img2.pixels[(lz+1)*ix+lx]) )/4;
//println(cy);
if( cy < 60 ){
fill(color(#dddddd));
} else if( cy < 100 ){
fill(color(#22aa55));
} else if( cy < 130 ){
fill(color(#777733));
} else {
fill(color(#224477));
}
vertex(ox+lx*us, oy+red(img2.pixels[lz*ix+lx]), oz+lz*us);
vertex(ox+(lx+1)*us, oy+red(img2.pixels[lz*ix+(lx+1)]), oz+lz*us);
vertex(ox+cx, oy+cy, oz+cz);

vertex(ox+(lx+1)*us, oy+red(img2.pixels[lz*ix+(lx+1)]), oz+lz*us);
vertex(ox+cx, oy+cy, oz+cz);
vertex(ox+(lx+1)*us, oy+red(img2.pixels[(lz+1)*ix+(lx+1)]), oz+(lz+1)*us);

vertex(ox+(lx+1)*us, oy+red(img2.pixels[(lz+1)*ix+(lx+1)]), oz+(lz+1)*us);
vertex(ox+cx, oy+cy, oz+cz);
vertex(ox+lx*us, oy+red(img2.pixels[(lz+1)*ix+lx]), oz+(lz+1)*us);

vertex(ox+lx*us, oy+red(img2.pixels[(lz+1)*ix+lx]), oz+(lz+1)*us);
vertex(ox+cx, oy+cy, oz+cz);
vertex(ox+lx*us, oy+red(img2.pixels[lz*ix+lx]), oz+lz*us);

endShape();
}
}
}


出力画像


動作環境
processing 1.0.9

〇関連項目
・Processingをインストールした仮想マシンを構築するには、以下のページを参照してください。
https://serverarekore.blogspot.com/search/label/Processing

・Processingに関する他の記事は、こちらを参照してください。

Sunday, February 21, 2010

processingとJava Image Filters(pixels)を使用して万華鏡のような画像が動くアニメーションを表示する

processingとJava Image Filters(pixels)を使用して万華鏡のような画像が動くアニメーションを表示するには、以下のコードを実行します。Java Image Filtersはhttps://pixels.dev.java.net/servlets/ProjectDocumentListから pixels-core-2.1.3-SNAPSHOT.jarをダウンロードしてSketchのフォルダのcodeサブフォルダに配置するか、 Sketch->Add FilesメニューからSketchに追加します。


// キャンバスサイズ
int rad = 0;
PImage img;
KaleidoscopeFilter kf;

void setup(){
img = loadImage("sf2.jpg");
size(img.width, img.height);
// 万華鏡のような画像を生成する
kf = new KaleidoscopeFilter();
// 面数
kf.setSides(6);
// 角度1
kf.setAngle(20f/180f*ImageMath.PI);
// 角度2
kf.setAngle2(50f/180f*ImageMath.PI);
// 半径
kf.setRadius(100);
}

void draw(){
// 中心X
kf.setCentreX(0.5f+0.15*cos(2*PI*rad/360));
// 中心Y
kf.setCentreY(0.5f+0.10*sin(2*PI*rad/360));

PImage img2 = new PImage(kf.filter((BufferedImage)img.getImage(), null));
image(img2, 0, 0);
rad+=6;
}


元画像(sf2.jpg)


出力画像


動作環境
processing 1.0.9
〇関連項目
・Processingをインストールした仮想マシンを構築するには、以下のページを参照してください。
https://serverarekore.blogspot.com/search/label/Processing
Processing とJava Image Filters(pixels)を使用して万華鏡のような画像を作成する
・Processingに関する他の記事は、こちらを参照してください。

Saturday, February 20, 2010

processingで惑星が回転するアニメーションを表示する

processingで惑星が回転するアニメーションを表示するには、以下のコードを実行します。


import com.sun.opengl.util.*;
import javax.media.opengl.*;
import processing.opengl.*;
import com.sun.opengl.util.texture.*;
import javax.media.opengl.glu.*;
GL gl;
GLUT glut;
PImage img;
Texture texture;
void setup()
{
size(400, 300, OPENGL);
lights();
img = loadImage("tex1.png");
texture = TextureIO.newTexture(
(BufferedImage)img.getImage(), true);
texture.enable();
texture.bind();
gl = ((PGraphicsOpenGL)g).beginGL();
glut = new GLUT();
gl.glClearColor(0.0, 0.0, 0.0, 0.0);
}

void draw()
{
gl=((PGraphicsOpenGL)g).beginGL();
gl.glEnable(GL.GL_LIGHTING);
gl.glEnable(GL.GL_LIGHT0);
gl.glEnable(GL.GL_NORMALIZE);
gl.glEnable(GL.GL_DEPTH_TEST);
gl.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE);
gl.glEnable(gl.GL_COLOR_MATERIAL);
gl.glClear(GL.GL_COLOR_BUFFER_BIT |GL.GL_DEPTH_BUFFER_BIT );

gl.glTranslatef(width/2, height/2+50, -50);
gl.glPushMatrix();

gl.glDisable(GL.GL_TEXTURE_2D);
gl.glColor3f(
(float)0xff/(float)0xff,
(float)0xff/(float)0xff,
(float)0xff/(float)0xff
);
gl.glRotatef(-30f, 1.0f, 0.0f, 0.0f);
gl.glBegin(GL.GL_LINE_LOOP);
for(int pl = 0; pl <= 36; pl++){
gl.glVertex3f(100f*cos(PI*2*(pl*10)/360), 0, 100f*sin(PI*2*(pl*10)/360));
}
gl.glEnd();

gl.glRotatef(frameCount*3, 0.0f, 1.0f, 0.0f);
gl.glTranslatef(100, 0, 0);

gl.glEnable(GL.GL_TEXTURE_2D);

GLUquadric gluq = ((PGraphicsOpenGL)g).glu.gluNewQuadric();
((PGraphicsOpenGL)g).glu.gluQuadricTexture(gluq, true);
((PGraphicsOpenGL)g).glu.gluQuadricDrawStyle(gluq, GLU.GLU_FILL);
((PGraphicsOpenGL)g).glu.gluQuadricNormals(gluq, GLU.GLU_SMOOTH);
((PGraphicsOpenGL)g).glu.gluSphere(gluq, 20, 64, 64);
((PGraphicsOpenGL)g).glu.gluDeleteQuadric(gluq);

gl.glPopMatrix();
((PGraphicsOpenGL)g).endGL();
}


テクスチャ画像(tex1.png)


出力画像


動作環境
processing 1.0.9

〇関連項目
・Processingをインストールした仮想マシンを構築するには、以下のページを参照してください。
https://serverarekore.blogspot.com/search/label/Processing

・Processingに関する他の記事は、こちらを参照してください。

Java2DとJava Image Filters(pixels)を使用して四角グラデーションを描画する

Java2DとJava Image Filters(pixels)を使用して四角グラデーションを描画するには、以下のコードを実行します。


import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import com.jhlabs.composite.*;
import com.jhlabs.image.*;

public class Java2DTest68
{
public static void main(String args[])
throws Exception
{
/* 四角グラデーション画像を作成する */
BufferedImage img = new BufferedImage(
300, 300,
BufferedImage.TYPE_INT_ARGB
);
GradientFilter ff = new GradientFilter(
new Point(150, 150), new Point(300, 300),
0xff7799dd, 0xffffffff,
false, GradientFilter.SQUARE,
GradientFilter.INT_SMOOTH);

BufferedImage img2 = ff.filter(img, null);
ImageIO.write(img2, "png", new File("sample1969a.png"));
}
}


出力画像(sample1969a.png)
Java2DとJava Image Filtersを使用して描画した四角グラデーション

関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.net でのプロジェクトページ
https://pixels.dev.java.net/

Friday, February 19, 2010

processingでテクスチャが張られた球が回転するアニメーションを表示する

processingでテクスチャが張られた球が回転するアニメーションを表示するには、以下のコードを実行します。


import com.sun.opengl.util.*;
import javax.media.opengl.*;
import processing.opengl.*;
import com.sun.opengl.util.texture.*;
import javax.media.opengl.glu.*;
GL gl;
GLUT glut;
PImage img;
Texture texture;
void setup()
{
size(400, 300, OPENGL);
ambientLight(128, 128, 128, 0, 0, 300);
lightFalloff(1.0, 0.0, 0.0);

img = loadImage("SF_R.JPG");
texture = TextureIO.newTexture(
(BufferedImage)img.getImage(), true);
texture.enable();
texture.bind();
gl = ((PGraphicsOpenGL)g).beginGL();
glut = new GLUT();
gl.glClearColor(0.0, 0.0, 0.0, 0.0);
}

void draw()
{
gl=((PGraphicsOpenGL)g).beginGL();
gl.glEnable(GL.GL_LIGHTING);
gl.glEnable(GL.GL_LIGHT0);
gl.glEnable(GL.GL_NORMALIZE);
gl.glEnable(GL.GL_DEPTH_TEST);
gl.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE);
gl.glEnable(gl.GL_COLOR_MATERIAL);
gl.glClear(GL.GL_COLOR_BUFFER_BIT |GL.GL_DEPTH_BUFFER_BIT );

gl.glTranslatef(width/2, height/2+50, -50);
gl.glPushMatrix();

gl.glRotatef(30f, 1.0f, 0.0f, 0.0f);
gl.glRotatef(frameCount*3, 0.0f, 1.0f, 0.0f);
gl.glTranslatef(100, 0, 0);

gl.glEnable(GL.GL_TEXTURE_2D);

GLUquadric gluq = ((PGraphicsOpenGL)g).glu.gluNewQuadric();
((PGraphicsOpenGL)g).glu.gluQuadricTexture(gluq, true);
((PGraphicsOpenGL)g).glu.gluQuadricDrawStyle(gluq, GLU.GLU_FILL);
((PGraphicsOpenGL)g).glu.gluQuadricNormals(gluq, GLU.GLU_SMOOTH);
((PGraphicsOpenGL)g).glu.gluSphere(gluq, 70, 64, 64);
((PGraphicsOpenGL)g).glu.gluDeleteQuadric(gluq);

gl.glPopMatrix();
((PGraphicsOpenGL)g).endGL();
}


テクスチャ画像(SF_R.JPG)


出力画像


動作環境
processing 1.0.9

〇関連項目
・Processingをインストールした仮想マシンを構築するには、以下のページを参照してください。
https://serverarekore.blogspot.com/search/label/Processing

・Processingに関する他の記事は、こちらを参照してください。

Thursday, February 18, 2010

processsingでテクスチャの張られたポリゴンが回転するアニメーションを表示する

processsingでテクスチャの張られたポリゴンが回転するアニメーションを表示するには、以下のコードを実行します。


import com.sun.opengl.util.*;
import javax.media.opengl.*;
import processing.opengl.*;
import com.sun.opengl.util.texture.*;
GL gl;
GLUT glut;
PImage img;
void setup()
{
size(400, 300, OPENGL);
ambientLight(128, 128, 128, 0, 0, 300);

img = loadImage("SF_R.JPG");
Texture texture = TextureIO.newTexture(
(BufferedImage)img.getImage(), true);
texture.enable();
texture.bind();
gl = ((PGraphicsOpenGL)g).beginGL();
glut = new GLUT();
gl.glClearColor(0.0, 0.0, 0.0, 0.0);
}

void draw()
{
gl=((PGraphicsOpenGL)g).beginGL();
gl.glEnable(GL.GL_LIGHTING);
gl.glEnable(GL.GL_LIGHT0);
gl.glDisable(GL.GL_CULL_FACE);
gl.glEnable(GL.GL_NORMALIZE);
gl.glEnable(GL.GL_DEPTH_TEST);
gl.glEnable(gl.GL_COLOR_MATERIAL);
gl.glClear(GL.GL_COLOR_BUFFER_BIT |GL.GL_DEPTH_BUFFER_BIT );
gl.glTranslatef(width/2, height/2+50, -50);
gl.glPushMatrix();

gl.glRotatef(30f, 1.0f, 0.0f, 0.0f);
gl.glRotatef(frameCount*3, 0.0f, 1.0f, 0.0f);
gl.glTranslatef(100, 0, 0);

gl.glBegin(GL.GL_POLYGON);
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex3f(-80f, -80f, 0.0f);
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex3f(80f, -80f, 0.0f);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex3f(80f, 80f, 0.0f);
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex3f(-80f, 80f, 0.0f);
gl.glEnd();

gl.glPopMatrix();
((PGraphicsOpenGL)g).endGL();
}


テクスチャ画像(SF_R.JPG)


出力画像


動作環境
processing 1.0.9

〇関連項目
・Processingをインストールした仮想マシンを構築するには、以下のページを参照してください。
https://serverarekore.blogspot.com/search/label/Processing

・Processingに関する他の記事は、こちらを参照してください。

Wednesday, February 17, 2010

processingでワイヤーフレームとポリゴンの球が回転するアニメーションを表示する

processingでワイヤーフレームとポリゴンの球が回転するアニメーションを表示するには、以下のコードを実行します。


import com.sun.opengl.util.*;
import javax.media.opengl.*;
import processing.opengl.*;
GL gl;
GLUT glut;
void setup()
{
size(400, 300, OPENGL);
ambientLight(128, 128, 128, 0, 0, 300);

gl = ((PGraphicsOpenGL)g).beginGL();
glut = new GLUT();
gl.glClearColor(0.0, 0.0, 0.0, 0.0);
}

void draw()
{
gl=((PGraphicsOpenGL)g).beginGL();
gl.glEnable(GL.GL_LIGHTING);
gl.glEnable(GL.GL_LIGHT0);
gl.glEnable(GL.GL_CULL_FACE);
gl.glEnable(GL.GL_NORMALIZE);
gl.glEnable(GL.GL_DEPTH_TEST);

// フラットシェーディングモデル
gl.glShadeModel(GL.GL_FLAT);
// ポリゴンオフセットを設定
gl.glEnable( GL.GL_POLYGON_OFFSET_FILL );
gl.glPolygonOffset( 1f, 1f );

gl.glClear(GL.GL_COLOR_BUFFER_BIT |GL.GL_DEPTH_BUFFER_BIT );
gl.glTranslatef(width/2, height/2+50, -50);
gl.glPushMatrix();

gl.glRotatef(20f, 1.0f, 0.0f, 0.0f);
gl.glRotatef(frameCount*3, 0.0f, 1.0f, 0.0f);
gl.glTranslatef(100, 0, 0);

gl.glDisable(GL.GL_LIGHTING);
// 線の色を設定
gl.glColor3f(
(float)0xff/(float)0xff,
(float)0xff/(float)0xff,
(float)0xff/(float)0xff
);
// ワイヤーフレームの球を描画
glut.glutWireSphere(90f, 16, 16);
// 面の色を設定
gl.glEnable(GL.GL_LIGHTING);

gl.glColor3f(
(float)0x77/(float)0xff,
(float)0x99/(float)0xff,
(float)0xff/(float)0xff
);
// 球を描画
glut.glutSolidSphere(90f, 16, 16);
gl.glPopMatrix();
((PGraphicsOpenGL)g).endGL();
}


出力画像


動作環境
processing 1.0.9

〇関連項目
・Processingをインストールした仮想マシンを構築するには、以下のページを参照してください。
https://serverarekore.blogspot.com/search/label/Processing

・Processingに関する他の記事は、こちらを参照してください。

Tuesday, February 16, 2010

processingでフラットシェーディングの球が回転するアニメーションを表示する

processingでフラットシェーディングの球が回転するアニメーションを表示するには、以下のコードを実行します。


import com.sun.opengl.util.*;
import javax.media.opengl.*;
import processing.opengl.*;
GL gl;
GLUT glut;
void setup()
{
size(400, 300, OPENGL);
ambientLight(128, 128, 128, 0, 0, 300);

gl = ((PGraphicsOpenGL)g).beginGL();
glut = new GLUT();
gl.glClearColor(0.0, 0.0, 0.0, 0.0);
}

void draw()
{
gl=((PGraphicsOpenGL)g).beginGL();
gl.glEnable(GL.GL_LIGHTING);
gl.glEnable(GL.GL_LIGHT0);
gl.glEnable(GL.GL_CULL_FACE);
gl.glEnable(GL.GL_NORMALIZE);
// フラットシェーディングモデル
gl.glShadeModel(GL.GL_FLAT);
gl.glClear(GL.GL_COLOR_BUFFER_BIT |GL.GL_DEPTH_BUFFER_BIT );

gl.glTranslatef(width/2, height/2+50, -50);
gl.glPushMatrix();

gl.glRotatef(20f, 1.0f, 0.0f, 0.0f);
gl.glRotatef(frameCount*3, 0.0f, 1.0f, 0.0f);
gl.glTranslatef(100, 0, 0);
// 面の色を設定
gl.glColor3f(
(float)0x77/(float)0xff,
(float)0x99/(float)0xff,
(float)0xff/(float)0xff
);
// 球を描画
glut.glutSolidSphere(70f, 16, 16);
gl.glPopMatrix();
((PGraphicsOpenGL)g).endGL();
}


出力画像


動作環境
processing 1.0.9

〇関連項目
・Processingをインストールした仮想マシンを構築するには、以下のページを参照してください。
https://serverarekore.blogspot.com/search/label/Processing

・Processingに関する他の記事は、こちらを参照してください。