¤³¤³¤Ç¤Ï¥·¥§¡¼¥À¤Î´ðÁäò³Ø¤Ó¤Þ¤¹¡¥
¥â¥Ç¥ë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); }
¤³¤ì¤Þ¤Ç¡¤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);
¥â¥Ç¥ë¤Î¿§¤òÀ֤ȻØÄꤷ¤Æ¤¤¤ë¤Î¤Ë´Ø¤ï¤é¤º¡¤¥â¥Ç¥ë¤¬ÀĤˤʤê¤Þ¤·¤¿¡¥¥·¥§¡¼¥À¤Ç¥â¥Ç¥ë¤òÉÁ²è¤¹¤ëºÝ¤Ï¡¤²èÌ̤βèÁǤ理òɬ¤º
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¤È¤Ê¤ê¤Þ¤¹¡¥°Ê²¼¤Î¿Þ¤Ç¼¨¤¹¤è¤¦¤Ë¡¤¥â¥Ç¥ëĺÅÀ¤ÎË¡Àþ¤È¡¤¸÷¸»¤Î¸þ¤¤ÎÈ¿ÂÐ¥Ù¥¯¥È¥ë¤ÎÆâÀѤÎÃͤò¥â¥Ç¥ë¤Î¿§¤ËÀÑ»»¤¹¤ë¤³¤È¤Ç¸÷¤Îɽ¸½¤¬²Äǽ¤È¤Ê¤ê¤Þ¤¹¡¥
Î㤨¤Ð¡¤ÆâÀѤÎÃͤòÆ©ÌÀÅ٤ˤ¹¤ë¤è¤¦ÀßÄꤷ¤Æ¤ß¤Þ¤¹¡¥
gl_FragColor = vec4(vertColor.xyz * intensity, intensity);
¸÷¤¬Åö¤¿¤Ã¤Æ¤¤¤ë¸Ä½ê¤ÏÉÔÆ©ÌÀ¤Ç¡¤Åö¤¿¤é¤Ê¤¤¸Ä½ê¤ÏÆ©ÌÀ¤È¤Ê¤ê¤Þ¤¹¡¥
¤³¤Î¤è¤¦¤Ë¥·¥§¡¼¥À¤ò½ñ¤´¹¤¨¤ë¤³¤È¤Ç¡¤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·î15Æü¡Ê¶â¡Ë 18:00
¥»¥Ô¥¢Ä´¡Ê¸Å¤¤¼Ì¿¿¤Î¤è¤¦¤Ê¿§¹ç¤¤¡Ë¤ÇÉÁ²è¤¹¤ë¥·¥§¡¼¥À¤ò½ñ¤±
Äó½Ð¥¹¥±¥Ã¥Á̾¡§BASIC6_1¡¡¡Ê¥Õ¥©¥ë¥À¤´¤ÈÄó½Ð¡Ë
¥ª¥ê¥¸¥Ê¥ë¡Ê¥·¥§¡¼¥À¤òÍѤ¤¤Æ¤¤¤Ê¤¤¡Ë¡§
²ÝÂê¤Î·ë²ÌÎ㡧
°Ê²¼¤Î¥µ¥¤¥È¤è¤ê°úÍѤ¹¤ë¤È¡¤
¤Þ¤º¡¤¥ª¥ê¥¸¥Ê¥ë¤Î²èÁǤ理ò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
¤È¤¹¤ë¤³¤È¤Ç¡¤¥»¥Ô¥¢Ä´¤Î¿§¤È¤Ê¤ë¡¥
vec3 c = vertColor.xyz * intensity; float g = 0.29 * c.x + 0.58 * c.y + 0.11 * c.z; gl_FragColor = vec4(g, g, g, 1.0);
ʪÂΤ¬ÉÁ²è¤µ¤ì¤Ê¤¤²Õ½ê¤Ï¥·¥§¡¼¥À¤¬Å¬ÍѤµ¤ì¤Ê¤¤¤Î¤Ç¡¤background´Ø¿ô¤Î¿§¤ò¥»¥Ô¥¢Ä´¤Î¿§¤ËÊѹ¹¤·¤Æ¤ª¤¯¡¥
·ë²ÌÎã¤Ï¡¤
background(240, 200, 145);
¤È¤·¤Æ¤¤¤ë¡¥
Âè4²ó¤Î¥é¥¤¥Æ¥£¥ó¥°¤Ç¤ÏÌ̤ÎË¡Àþ¡ÊɽÌ̤È΢Ì̡ˤò¹Íθ¤¹¤ëɬÍפϤʤ«¤Ã¤¿¡¥¤·¤«¤·Æȼ«¤Ë¥·¥§¡¼¥À¤òµ½Ò¤¹¤ë¾ì¹ç¡¤Ì̤ϡÖĺÅÀ»þ·×²ó¤ê¤È¤Ê¤ëÌ̤òɽÌ̤Ȥ¹¤ë¡×¤È¤Ê¤Ã¤Æ¤ª¤ê¡¤¤½¤ì¤Ë½¾¤Ã¤¿Ë¡Àþ¤¬¥·¥§¡¼¥À¤ËÅϤµ¤ì¤Æ¤¯¤ë¤Î¤ÇÃí°Õ¤¹¤ëɬÍפ¬¤¢¤ë¡¥
¤½¤Î¤¿¤á¡¤ÄºÅÀ¤¬È¿»þ·×²ó¤ê¤ÎÌ̤Ï΢Ì̤Ȥʤꡤ¸÷¤òÅö¤Æ¤Æ¤â¿¿¤Ã¹õ¤Î¤Þ¤Þ¤Ê¤Î¤ÇÃí°Õ¤¹¤ë¡¥
¥¢¥Ë¥áÄ´¡Ê¥È¥¥¡¼¥ó¥·¥§¡¼¥Ç¥£¥ó¥°¡Ë¤ÇÉÁ²è¤¹¤ë¥·¥§¡¼¥À¤ò½ñ¤±
Äó½Ð¥¹¥±¥Ã¥Á̾¡§ADVANCE6_1¡¡¡Ê¥Õ¥©¥ë¥À¤´¤ÈÄó½Ð¡Ë
¥Ò¥ó¥È¡§¥¢¥Ë¥áÄ´¤Ë¤¹¤ë¤Ë¤Ï
²¼¿Þº¸¤Î¤è¤¦¤Ë¡¤intensity¤ò¤½¤Î¤Þ¤Þ»ÈÍѤ·¤¿¾ì¹ç¡¤É½Ì̤ÎÌÀ¤ë¤µ¤ÏϢ³Ū¤ËÊѲ½¤¹¤ë¡¥¤½¤³¤Ç¡¤²¼¿Þ±¦¤Î¤è¤¦¤Ë¡¤intensity¤ÎÃͤò³¬Ãʾõ¤Ë¤Ê¤ë¤è¤¦¤Ë²Ã¹©¤¹¤ì¤Ð¤è¤¤¡¥¤³¤ì¤Ë¤Ï¿ô¼°¤ÏɬÍפʤ¯¡¤ifʸ¤Ç²Äǽ¤Ç¤¢¤ë¡¥