¥·¥§¡¼¥À¡¼

¤³¤³¤Ç¤Ï¥·¥§¡¼¥À¤Î´ðÁäò³Ø¤Ó¤Þ¤¹¡¥

½àÈ÷

¥â¥Ç¥ë1¸Ä¤È¥é¥¤¥È¤¬1¤Ä¤¢¤ë´ðËÜŪ¤Ê¥·¡¼¥ó¤òÍÑ°Õ¤·¤Þ¤¹¡¥

void setup()
{
  size(640, 480, P3D);
}

void draw()
{
  background(127, 127, 127);
  camera(100, -100, 100, 0, 0, 0, 0, 1, 0);
  axis(100);
  fill(255, 0, 0);
  noStroke();
  directionalLight(255, 255, 255, -1, 1, 0);
  sphere(30);
}

void axis(float l)
{
  stroke(255, 0, 0);
  line(0, 0, 0, l, 0, 0);
  stroke(0, 255, 0);
  line(0, 0, 0, 0, l, 0);
  stroke(0, 0, 255);
  line(0, 0, 0, 0, 0, l);
}
lightrot.png

¥·¥§¡¼¥À¡¼¤È¤Ï

¤³¤ì¤Þ¤Ç¡¤3DCG¤òÉÁ¤¯¤¿¤á¸÷¸»¤ÎÀßÄê¤Ê¤É¤ò¹Ô¤¤¤Þ¤·¤¿¡¥Î㤨¤Ð¡¤

directionalLight(255, 255, 255, -1, 1, 0);

¤Î¤è¤¦¤Ëµ­½Ò¤·¤Þ¤·¤¿¡¥

¤Ç¤Ï¡¤¼ÂºÝ¤ËÇÛÃÖ¤µ¤ì¤¿¥â¥Ç¥ë¤È¸÷¸»¤Ï¤É¤Î¤è¤¦¤Ë·×»»¤µ¤ì¤Æ¿§¤¬·èÄꤵ¤ì¤ë¤Î¤Ç¤·¤ç¤¦¤«¡©
Processing2.0¤«¤é¤Ï¥·¥§¡¼¥À¤¬¤½¤Î·×»»¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡¥

¥·¥§¡¼¥À¤Ï¥×¥í¥°¥é¥à¤«¤éÅϤµ¤ì¤¿¥â¥Ç¥ë¤Î¾ðÊó¡ÊĺÅÀ¤Î°ÌÃÖ¡¤Ë¡Àþ¡¤¿§¤Ê¤É¡Ë¡¤¸÷¸»¤Î¾ðÊó¡Ê¿§¡¤¸þ¤­¤Ê¤É¡Ë¤Ê¤É¤ò¼õ¤±¤È¤ê¡¤GPU¤ËÂФ·¤Æ¤É¤Î¤è¤¦¤Ë·×»»¤·¡¤²èÌ̤βèÁǤ理ò¤É¤¦¤¹¤ë¤«»Ø¼¨¤¹¤ë¤¿¤á¤Î¡¤¤â¤¦°ì¤Ä¤Î¥×¥í¥°¥é¥à¤Ç¤¹¡¥

¥·¥§¡¼¥À¤ò»È¤Ã¤Æ¤ß¤ë

Processing¤¬¥Ç¥Õ¥©¥ë¥È¤Ç»ÈÍѤ·¤Æ¤¤¤ë¥·¥§¡¼¥À¤ò¤ä¤á¤Æ¡¤¼«¿È¤Ç¥·¥§¡¼¥À¤òÍÑ°Õ¤·¤Æ»È¤Ã¤Æ¤ß¤Þ¤¹¡¥¤Þ¤º¤ÏƱ¤¸·ë²Ì¤ò½Ð¤¹¤è¤¦¤Ë¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡¥

PShader shader;

void setup()
{
  size(640, 480, P3D);
  shader = loadShader("FragmentShader.glsl", "VertexShader.glsl");
}

void draw()
{
  background(127, 127, 127);
  camera(100, -100, 100, 0, 0, 0, 0, 1, 0);
  axis(100);
  fill(255, 0, 0);
  noStroke();
  directionalLight(255, 255, 255, -1, 1, 0);
  shader(shader);
  sphere(30);
}

void axis(float l)
{
  stroke(255, 0, 0);
  line(0, 0, 0, l, 0, 0);
  stroke(0, 255, 0);
  line(0, 0, 0, 0, l, 0);
  stroke(0, 0, 255);
  line(0, 0, 0, 0, 0, l);
}

¥·¥§¡¼¥À¤Ç¤¢¤ë°Ê²¼2¤Ä¤Î¥Õ¥¡¥¤¥ë¡¤VertexShader.glsl¡¤FragmentShader.glsl¤Ï¥á¥âÄ¢¤Ê¤É¤Ë¥³¥Ô¡¼¤·¤Æ¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤È¤·¤ÆÊݸ¡¤Processing¤Î[Sketch]¢ª[Add File]¤ÇÄɲ䷤Ƥ¯¤À¤µ¤¤¡¥

VertexShader.glsl¡§

uniform mat4 transform; 
uniform mat3 normalMatrix; 
uniform vec3 lightNormal;

attribute vec4 vertex; 
attribute vec4 color;
attribute vec3 normal;

varying vec4 vertColor;
varying vec3 vertNormal;
varying vec3 vertLightDir;

void main() {
  gl_Position = transform * vertex;  
  vertColor = color;
  vertNormal = normalize(normalMatrix * normal);
  vertLightDir = -lightNormal;
}

FragmentShader.glsl¡§

#ifdef GL_ES
precision mediump float;
precision mediump int;
#endif

#define PROCESSING_LIGHT_SHADER

uniform float fraction;

varying vec4 vertColor;
varying vec3 vertNormal;
varying vec3 vertLightDir;

void main() {  
  float intensity;
  intensity = max(0.0, dot(vertLightDir, vertNormal));
  gl_FragColor = vec4(vertColor.xyz * intensity, 1.0);
}

¥·¥§¡¼¥À¤Î½ñ¤­´¹¤¨

[Sketch]¢ª[Show Sketch Folder]¤Ç¡¤¸½ºß¤ÎSketch¤Î¥Õ¥©¥ë¥À¤ò³«¤­¡¤¥Õ¥©¥ë¥À¡ÖData¡×¤ò³«¤¯¤È¡¤Àè¤Û¤ÉÄɲä·¤¿Æó¤Ä¤Î¥·¥§¡¼¥À¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¤Î¤Ç¡¤¤³¤ì¤ò½ñ¤­´¹¤¨¤Æ¤¤¤­¤Þ¤¹¡¥

Î㤨¤Ð¡¤¥â¥Ç¥ë¤òÉÁ²è¤¹¤ëºÝ¤Î¡¤³Æ²èÁǤ理ÏFragmentShader.glslÆâ¤Ç·×»»¤µ¤ì¤Þ¤¹¡¥¶ñÂÎŪ¤Ë¤Ï°Ê²¼¤Î¥³¡¼¥É¤Ç¤¹¡¥

gl_FragColor = vec4(vertColor.xyz * intensity, 1.0);

»î¤·¤Ë¡¤°Ê²¼¤Î¤è¤¦¤ËÊѹ¹¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡¥

gl_FragColor = vec4(0.5, 0.5, 1.0, 1.0);
fragshader.png

¥â¥Ç¥ë¤Î¿§¤òÀ֤ȻØÄꤷ¤Æ¤¤¤ë¤Î¤Ë´Ø¤ï¤é¤º¡¤¥â¥Ç¥ë¤¬ÀĤˤʤê¤Þ¤·¤¿¡¥¥·¥§¡¼¥À¤Ç¥â¥Ç¥ë¤òÉÁ²è¤¹¤ëºÝ¤Ï¡¤²èÌ̤βèÁǤ理òɬ¤º

RGBA=(0.5, 0.5, 1.0, 1.0);

¤È¤¹¤ë¤è¤¦¤Ë¥·¥§¡¼¥À¤ò½ñ¤­´¹¤¨¤¿¤¿¤á¤Ç¤¹¡¥

¸µ¡¹¤Î¥×¥í¥°¥é¥à¤¬¤É¤¦¤¤¤¦°ÕÌ£¤«²òÀ⤷¤Æ¤¤¤­¤Þ¤¹¡¥

gl_FragColor = vec4(vertColor.xyz * intensity, 1.0);

vertColor¤Ë¤Ï¥â¥Ç¥ë¤Î¿§¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹RGBA=(1, 0, 0, 1)¡¥¥·¥§¡¼¥ÀÆâ¤Ç¤Ï¿§¤â¥Ù¥¯¥È¥ë¤È¤·¤Æ°·¤¦¤¿¤áXYZW¤¬¤½¤ì¤¾¤ìRGBA¤ËÂбþ¤·¤Þ¤¹¡¥intensity¤Ï°Ê²¼¤Î¤è¤¦¤Ë·×»»¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥

intensity = max(0.0, dot(vertLightDir, vertNormal));

vertLightDir¤Ï¸÷¸»¤Î¸þ¤­¤ÎÈ¿ÂÐ¥Ù¥¯¥È¥ë¡¤vertNormal¤Ï¥â¥Ç¥ëĺÅÀ¤ÎË¡Àþ¤Ç¤¹¡¥dot¤ÏÆâÀѤò¹Ô¤¦´Ø¿ô¡¤max¤Ï2¤Ä¤ÎÃͤΤ¦¤Á¡¤Â礭¤¤ÃͤòÊÖ¤¹´Ø¿ô¤Ç¤¹¡¥ÆâÀѤϡ¤2¤Ä¤Î¥Ù¥¯¥È¥ë¤¬Æ±¤¸¸þ¤­¤ò¸þ¤¤¤Æ¤¤¤ì¤Ð1¡¤Ä¾³Ñ¤Ç¤¢¤ì¤Ð0¡¤È¿ÂФò¸þ¤¤¤Æ¤¤¤ì¤Ð-1¤È¤Ê¤ê¤Þ¤¹¡¥°Ê²¼¤Î¿Þ¤Ç¼¨¤¹¤è¤¦¤Ë¡¤¥â¥Ç¥ëĺÅÀ¤ÎË¡Àþ¤È¡¤¸÷¸»¤Î¸þ¤­¤ÎÈ¿ÂÐ¥Ù¥¯¥È¥ë¤ÎÆâÀѤÎÃͤò¥â¥Ç¥ë¤Î¿§¤ËÀÑ»»¤¹¤ë¤³¤È¤Ç¸÷¤Îɽ¸½¤¬²Äǽ¤È¤Ê¤ê¤Þ¤¹¡¥

lighting.png

Î㤨¤Ð¡¤ÆâÀѤÎÃͤòÆ©ÌÀÅ٤ˤ¹¤ë¤è¤¦ÀßÄꤷ¤Æ¤ß¤Þ¤¹¡¥

  gl_FragColor = vec4(vertColor.xyz * intensity, intensity);

¸÷¤¬Åö¤¿¤Ã¤Æ¤¤¤ë¸Ä½ê¤ÏÉÔÆ©ÌÀ¤Ç¡¤Åö¤¿¤é¤Ê¤¤¸Ä½ê¤ÏÆ©ÌÀ¤È¤Ê¤ê¤Þ¤¹¡¥

trans.png

¤³¤Î¤è¤¦¤Ë¥·¥§¡¼¥À¤ò½ñ¤­´¹¤¨¤ë¤³¤È¤Ç¡¤Processing¤¬ÍÑ°Õ¤¹¤ë¥Ç¥Õ¥©¥ë¥È¤Î´Ø¿ô¤Ç¤Ï¼Â¸½ÉÔ²Äǽ¤Êɽ¸½¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥

¥·¥§¡¼¥ÀÆâ¤Ç»È¤¨¤ë·¿

¥·¥§¡¼¥À¤ÏProcessing¤È¤Ï°Û¤Ê¤ë¸À¸ì¤Ç¤¹¤Î¤Ç¡¤»È¤¨¤ë·¿¤â°Û¤Ê¤ê¤Þ¤¹¡¥CG¤Ë¤ª¤¤¤Æ¤Ï¥Ù¥¯¥È¥ë¤ª¤è¤Ó¹ÔÎó¤ò»È¤¦¤³¤È¤¬Â¿¤¤¤Î¤Ç¡¤¤½¤ì¤é¤Î·¿¤Ï½é¤á¤«¤éÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥

Àµ³Î¤Ë¤ÏProcessing¤Ç¤ÏGLSL¤È¤¤¤¦¥·¥§¡¼¥À¸À¸ì¤Ê¤Î¤Ç¡¤»ÈÍѤǤ­¤ë·¿¤Î¾ÜºÙ¤Ï°Ê²¼¤ò»²¾È¡¥

¤³¤³¤Ç¤Ï¥Ù¥¯¥È¥ë·¿¤Î»ÈÍÑÎã¤ò¼¨¤·¤Þ¤¹¡¥

vec4 v = vec4(1.0, 0.0, 0.0, 1.0); //4¼¡¸µ¥Ù¥¯¥È¥ëÊÑ¿ô¤òÃͽé´ü²½¤·¤ÆºîÀ®
v.x = 2.0;                         //xÀ®Ê¬¤òÊѹ¹
v.y = v.z;                         //yÀ®Ê¬¤òzÀ®Ê¬¤ËÊѹ¹
vec3 a = vec3(3.0, 2.0, 1.0);      //3¼¡¸µ¥Ù¥¯¥È¥ëÊÑ¿ô¤òÃͽé´ü²½¤·¤ÆºîÀ®
v = vec4(a.xyz, 1.0);              //v¤ÎÃͤòÊѹ¹¡¤a.xyz¤Î¤è¤¦¤ËÊ£¿ôÀ®Ê¬¤ò¤Þ¤È¤á¤¿½ñ¤­Êý¤â²Äǽ
                                   //v¤Ï(3.0, 2.0, 1.0, 1.0)¤È¤Ê¤ë
vec3 b = vec3(0.3, 0.2, 0.1);
vec3 c = a + b;                    //¥Ù¥¯¥È¥ë¤Î­¤·»»¤È¤Ê¤êc¤Ï(3.3, 2.2, 1.1)¤È¤Ê¤ë
vec3 d = a * b;                    //À®Ê¬¤´¤È¤Î³Ý¤±»»¤È¤Ê¤êd¤Ï(0.9, 0.4, 0.1)¤È¤Ê¤ë

¾ÜºÙ¤òÃΤꤿ¤¤¾ì¹ç¤Ï°Ê²¼¤ò»²¾È¡§

²ÝÂê¤ÎÄó½ÐÀ衦Äó½ÐÊýË¡

\\nas002.term.usmc.dendai.ac.jp\¼ø¶ÈÍѥ¥¯¥¹¥Ú¡¼¥¹\Àé½»¥­¥ã¥ó¥Ñ¥¹\¸å´ü\̤Íè²Ê³ØÉô\­¢¾ðÊó¥á¥Ç¥£¥¢³Ø²Ê\FI1¥á¥Ç¥£¥¢±é½¬C(CG)(¿¹Ã«Í§¾¼)·î34\Âè06²ó

»ØÄꤵ¤ì¤¿¥¹¥±¥Ã¥Á̾¤Ç¡¤¥¹¥±¥Ã¥Á¥Õ¥©¥ë¥À¤´¤ÈÄó½Ð¤·¤Æ¤¯¤À¤µ¤¤¡¥

Äó½ÐÄù¤áÀڤꡧ11·î3Æü¡Ê¶â¡Ë 18:00

²ÝÂê

¥»¥Ô¥¢Ä´¡Ê¸Å¤¤¼Ì¿¿¤Î¤è¤¦¤Ê¿§¹ç¤¤¡Ë¤ÇÉÁ²è¤¹¤ë¥·¥§¡¼¥À¤ò½ñ¤±

Äó½Ð¥¹¥±¥Ã¥Á̾¡§BASIC6_1¡¡¡Ê¥Õ¥©¥ë¥À¤´¤ÈÄó½Ð¡Ë

¥ª¥ê¥¸¥Ê¥ë¡Ê¥·¥§¡¼¥À¤òÍѤ¤¤Æ¤¤¤Ê¤¤¡Ë¡§

orig.png

²ÝÂê¤Î·ë²ÌÎ㡧

sepia.png

¥Ò¥ó¥È¡§¥»¥Ô¥¢Ä´¤Ø¤ÎÊÑ´¹¼°

°Ê²¼¤Î¥µ¥¤¥È¤è¤ê°úÍѤ¹¤ë¤È¡¤

¤Þ¤º¡¤¥ª¥ê¥¸¥Ê¥ë¤Î²èÁǤ理òc¤È¤¹¤ë¤È¡¤¤½¤ì¤ò¥°¥ì¡¼¥¹¥±¡¼¥ëg¤ËÊÑ´¹¤¹¤ë¡¥

g = 0.29 * c.r + 0.58 * c.g + 0.11 * c.b

¥«¥é¡¼¤ò¥°¥ì¡¼¥¹¥±¡¼¥ë¤ØÊÑ´¹¤¹¤ë¼°¤ÏÍÍ¡¹¤Ê¼°¤¬Äó°Æ¤µ¤ì¤Æ¤ª¤ê¡¤¾åµ­¤Î¼°¤Ï¤½¤ÎÆâ¤Î°ì¼ï¤Ç¤¢¤ë¡¥

¥°¥ì¡¼¥¹¥±¡¼¥ë¤ÎÃÍg¤ò´ð¤Ë¡¤¥»¥Ô¥¢Ä´¤Î¿§¤òÀ¸À®¤¹¤ë¡¥¤³¤Î¼°¤Ë¤Ï¸·Ì©¤ÊÄêµÁ¤Ï¤Ê¤¤¡¥

²èÁǤ理òp¤È¤¹¤ë¤È¡¤

p.r = 1.07 * g

p.g = 0.74 * g

p.b = 0.43 * g

¤È¤¹¤ë¤³¤È¤Ç¡¤¥»¥Ô¥¢Ä´¤Î¿§¤È¤Ê¤ë¡¥

¥Ò¥ó¥È¡§Çطʤο§

ʪÂΤ¬ÉÁ²è¤µ¤ì¤Ê¤¤²Õ½ê¤Ï¥·¥§¡¼¥À¤¬Å¬ÍѤµ¤ì¤Ê¤¤¤Î¤Ç¡¤background´Ø¿ô¤Î¿§¤ò¥»¥Ô¥¢Ä´¤Î¿§¤ËÊѹ¹¤·¤Æ¤ª¤¯¡¥

·ë²ÌÎã¤Ï¡¤

background(240, 200, 145);

¤È¤·¤Æ¤¤¤ë¡¥

Ǥ°Õ²ÝÂê

¥¢¥Ë¥áÄ´¡Ê¥È¥¥¡¼¥ó¥·¥§¡¼¥Ç¥£¥ó¥°¡Ë¤ÇÉÁ²è¤¹¤ë¥·¥§¡¼¥À¤ò½ñ¤±

Äó½Ð¥¹¥±¥Ã¥Á̾¡§ADVANCE6_1¡¡¡Ê¥Õ¥©¥ë¥À¤´¤ÈÄó½Ð¡Ë

toon.png

¥Ò¥ó¥È¡§¥¢¥Ë¥áÄ´¤Ë¤¹¤ë¤Ë¤Ï

²¼¿Þº¸¤Î¤è¤¦¤Ë¡¤intensity¤ò¤½¤Î¤Þ¤Þ»ÈÍѤ·¤¿¾ì¹ç¡¤É½Ì̤ÎÌÀ¤ë¤µ¤ÏϢ³Ū¤ËÊѲ½¤¹¤ë¡¥¤½¤³¤Ç¡¤²¼¿Þ±¦¤Î¤è¤¦¤Ë¡¤intensity¤ÎÃͤò³¬Ãʾõ¤Ë¤Ê¤ë¤è¤¦¤Ë²Ã¹©¤¹¤ì¤Ð¤è¤¤¡¥¤³¤ì¤Ë¤Ï¿ô¼°¤ÏɬÍפʤ¯¡¤ifʸ¤Ç²Äǽ¤Ç¤¢¤ë¡¥

int.png

¥È¥Ã¥×   ¿·µ¬ °ìÍ÷ ¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS