<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7537748518069296029</id><updated>2011-08-18T12:11:12.880-07:00</updated><category term='My Maya API'/><category term='RenderMan小小筆記(II)'/><category term='GLSL心得'/><category term='踏青~'/><category term='My Mental Ray'/><category term='聚餐'/><category term='動畫領域的他山之石'/><category term='Houdini雜記'/><category term='My RenderMan Tutorial'/><category term='mel與pymel'/><title type='text'>SoPoIxNx</title><subtitle type='html'>路不是到了盡頭，而是該轉彎了～享受每一個當下吧！</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-8127078598637865595</id><published>2010-11-20T16:35:00.000-08:00</published><updated>2010-11-29T07:18:35.401-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Mental Ray'/><title type='text'>Using Mental Ray to Implement The Skin Diffusion of GPU Gems 3</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOiMAGdJYqI/AAAAAAAABGo/6GGmGxiJytU/s1600/Far_advancdSkinColor_02.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 400px; float: left; height: 300px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541833274840146594" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOiMAGdJYqI/AAAAAAAABGo/6GGmGxiJytU/s400/Far_advancdSkinColor_02.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(&lt;a href="http://gl.ict.usc.edu/Research/FaceScanning/"&gt;File&lt;/a&gt; of this head is from &lt;a href="http://gl.ict.usc.edu/"&gt;ICT's website&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;I have implemented this method by using &lt;span style="color: rgb(255, 0, 0);"&gt;Lighting/Shading → Batch Bake&lt;/span&gt; from Mental Ray for Maya to bake light maps of each frame. And I wrote script to produce Gauss Blur maps of each light maps of each frame. Then for each frame, I wrote a mental ray node to combine&lt;br /&gt;those maps with the magic values from &lt;a href="http://http.developer.nvidia.com/GPUGems3/gpugems3_ch14.html"&gt;Skin Diffusion method of GPU Gems 3&lt;/a&gt;. But the performance of this way is very poor. Because if any parameter of light has changed, it is need to&lt;br /&gt;bake those light maps again, and will waste time.&lt;br /&gt;&lt;br /&gt;So I started to find another way to implement this method and more&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;efficiency. After I referred the sample code of light map of Mental Ray for Maya, I had wrote a light map node for Mantal Ray for Maya. Through this way, it could produse the light map and those Gauss Blur maps and then combine these maps with the magic value automatically while rendering.&lt;br /&gt;&lt;br /&gt;I downloaded the face data from ICT's website. This file is provided for Hybrid Normal Map method, so it provide R-channel, G-channel and B-channel normal maps. But I had used only the G-channel normal map for this blog.&lt;br /&gt;&lt;br /&gt;The specular of each pictures below is also using the method from the chap.14 of GPU Gems 3.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/TOiLnOWf28I/AAAAAAAABGg/k1P5l_kJJdU/s1600/ColorBase.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 400px; float: left; height: 300px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541832847463013314" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/TOiLnOWf28I/AAAAAAAABGg/k1P5l_kJJdU/s400/ColorBase.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Just using the G-channel normal map as this face's normal. The shadow is sharp.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/TOiKeKbHt3I/AAAAAAAABGY/qBAlqtbB9RE/s1600/ColorAdvancedSkin_02.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 400px; float: left; height: 300px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541831592278210418" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/TOiKeKbHt3I/AAAAAAAABGY/qBAlqtbB9RE/s400/ColorAdvancedSkin_02.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Using the Skin Diffusion method of chap.14 of GPU Gems 3. It is more redness of the skin and the shadow is more soft.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If it just render the diffuse part with white color and without using color texure, White Diffuse 2 is more redness of the skin than White Diffure 1.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOiJtmXX9AI/AAAAAAAABGQ/pzZHPJXFHM0/s1600/DiffuseBase.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 400px; float: left; height: 300px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541830757965100034" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOiJtmXX9AI/AAAAAAAABGQ/pzZHPJXFHM0/s400/DiffuseBase.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(White Diffure 1)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOiI_0f6fKI/AAAAAAAABGI/FTX4kkfYFlA/s1600/DiffuseAdvancedSkin_02.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 400px; float: left; height: 300px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541829971485031586" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOiI_0f6fKI/AAAAAAAABGI/FTX4kkfYFlA/s400/DiffuseAdvancedSkin_02.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(White Diffure 2)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, I start to describe what I have done step by step.&lt;br /&gt;&lt;br /&gt;Step1. I wrote a mental ray node and used &lt;span style="color: rgb(255, 0, 0);"&gt;Lighting/Shading → Batch Bake&lt;/span&gt; to bake a stretch map. (Please refer the Figure 14-21 of GPU Gems 3)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOiBmRtEtlI/AAAAAAAABFo/3ajX-wNOOM8/s1600/stretchMap.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 400px; float: left; height: 400px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541821836066862674" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOiBmRtEtlI/AAAAAAAABFo/3ajX-wNOOM8/s400/stretchMap.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step2. Using my light map node to produee the light map and using this light map to make other Gauss Blur maps.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOh567h2ExI/AAAAAAAABFg/rMB0i8cGNyw/s1600/LMB.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 111px; float: left; height: 400px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541813394798416658" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOh567h2ExI/AAAAAAAABFg/rMB0i8cGNyw/s400/LMB.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The operation of my light map node is like &lt;span style="color: rgb(255, 0, 0);"&gt;mib_lightmap_write&lt;/span&gt; of Mental Ray for Maya. But beside bake the light map(&lt;span style="color: rgb(51, 255, 255);"&gt;Texture&lt;/span&gt;), I used this light map and the stretch map(&lt;span style="color: rgb(51, 255, 255);"&gt;Sretch Map&lt;/span&gt;) to produce those Gauss Blur maps(&lt;span style="color: rgb(51, 255, 255);"&gt;Texture 2 ~ 6&lt;/span&gt;). Here the &lt;span style="color: rgb(51, 51, 255);"&gt;Stch Scale&lt;/span&gt; is a weight of the stretch map and &lt;span style="color: rgb(51, 51, 255);"&gt;Input&lt;/span&gt; is Diffuse with white color. Note: It is need to use 6 maps and those maps will be wrote by one light map and five Gauss Blur maps. But it will be combined with those magic values to render final image, so, initially, these maps can not be used with workless data.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOh5x5P2ZxI/AAAAAAAABFY/za7HvUryfDU/s1600/LMA.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 375px; float: left; height: 388px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541813239567247122" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOh5x5P2ZxI/AAAAAAAABFY/za7HvUryfDU/s400/LMA.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step3. Step2 will produce one light map and five Gauss Blur maps.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/TOh3dFViziI/AAAAAAAABFQ/cXyrLrXVcWs/s1600/6blurMaps.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 883px; float: left; height: 590px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541810683011845666" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/TOh3dFViziI/AAAAAAAABFQ/cXyrLrXVcWs/s400/6blurMaps.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step4. I had written a mental ray node to combine these maps with the magic value in Chap.14 of GPU Gems 3.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOh0MUoI45I/AAAAAAAABFI/i5CJURVLBYA/s1600/GB.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 154px; float: left; height: 400px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541807096523711378" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOh0MUoI45I/AAAAAAAABFI/i5CJURVLBYA/s400/GB.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The final network of shading nodes will have the form below.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOhzkKF1mtI/AAAAAAAABFA/AVtj6CQ9-Jw/s1600/2_comb_2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 169px; float: left; height: 400px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541806406500719314" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/TOhzkKF1mtI/AAAAAAAABFA/AVtj6CQ9-Jw/s400/2_comb_2.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Assigning this network to that face and rendering, it will produce the image like the below.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/TOhxeNemLSI/AAAAAAAABE4/rPtcIPllt6A/s1600/Far_advancdSkinColor_02.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; width: 400px; float: left; height: 300px; cursor: pointer;" id="BLOGGER_PHOTO_ID_5541804105307401506" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/TOhxeNemLSI/AAAAAAAABE4/rPtcIPllt6A/s400/Far_advancdSkinColor_02.png" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-8127078598637865595?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/8127078598637865595/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2010/11/using-mental-ray-to-implement-skin.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8127078598637865595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8127078598637865595'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2010/11/using-mental-ray-to-implement-skin.html' title='Using Mental Ray to Implement The Skin Diffusion of GPU Gems 3'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__Eme0nfpM4Y/TOiMAGdJYqI/AAAAAAAABGo/6GGmGxiJytU/s72-c/Far_advancdSkinColor_02.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-4013937833654835375</id><published>2010-10-28T21:33:00.000-07:00</published><updated>2010-10-29T00:33:21.153-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Maya API'/><title type='text'>Export Polygon from Maya to PBRT</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/TMptQErMo3I/AAAAAAAABEo/QSCmvjUr0nI/s1600/01_pbrt.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 400px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/TMptQErMo3I/AAAAAAAABEo/QSCmvjUr0nI/s400/01_pbrt.png" alt="" id="BLOGGER_PHOTO_ID_5533355215078335346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I haven't update this blog in almost one year.....It's time to write something down XD.&lt;br /&gt;&lt;br /&gt;Recently, I start to read this book → &lt;a href="http://www.amazon.com/Physically-Based-Rendering-Second-Implementation/dp/0123750792/ref=sr_1_fkmr0_1?ie=UTF8&amp;amp;qid=1288327764&amp;amp;sr=1-1-fkmr0"&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Physically Based Rendering, 2/e : From Theory To Implementation&lt;/span&gt;&lt;/a&gt;. And I want to test something by Maya, so I start to study Maya API.&lt;br /&gt;This is my first program by using Maya API. It's very simple and just exports the  polygon objects from Maya to the format of PBRT's geometry. And I have  refered to a Maya API example, say &lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;polyRawExporter&lt;/span&gt;, to write this exporter.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(We can downlad the source code of PBRT in this website : &lt;a href="http://www.pbrt.org/"&gt;http://www.pbrt.org/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I chose a scene file provided by PBRT's source code, say &lt;span style="color: rgb(255, 0, 0);"&gt;metal.pbrt&lt;/span&gt;. Rendering this file and it will generate a image as below. (I think this file format likes the *.rib of RenderMan :) )&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/TMps3Dt2B9I/AAAAAAAABEg/VMY7GRBsy2M/s1600/02_tt.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 400px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/TMps3Dt2B9I/AAAAAAAABEg/VMY7GRBsy2M/s400/02_tt.png" alt="" id="BLOGGER_PHOTO_ID_5533354785324271570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Since I want to replace the teapot by some polygon objects that I modeled in Maya.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/TMpsacAJgCI/AAAAAAAABEY/hdzv81X3NXg/s1600/03_sm.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 274px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/TMpsacAJgCI/AAAAAAAABEY/hdzv81X3NXg/s400/03_sm.png" alt="" id="BLOGGER_PHOTO_ID_5533354293627289634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I wrote a plug-in to export those objects to the format of PBRT's geometry.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/TMpsM30jn3I/AAAAAAAABEQ/DkugZZnG0Rk/s1600/04_exp.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 266px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/TMpsM30jn3I/AAAAAAAABEQ/DkugZZnG0Rk/s400/04_exp.png" alt="" id="BLOGGER_PHOTO_ID_5533354060576694130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In &lt;span style="color: rgb(255, 0, 0);"&gt;metal.pbrt&lt;/span&gt;,  replacing the teapot by what I had export. And that will generate the image below.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/TMpsBNg3U6I/AAAAAAAABEI/J7FBCi7fbdo/s1600/05_sp.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 400px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/TMpsBNg3U6I/AAAAAAAABEI/J7FBCi7fbdo/s400/05_sp.png" alt="" id="BLOGGER_PHOTO_ID_5533353860241249186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-4013937833654835375?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/4013937833654835375/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2010/10/export-polygon-from-maya-to-pbrt.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/4013937833654835375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/4013937833654835375'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2010/10/export-polygon-from-maya-to-pbrt.html' title='Export Polygon from Maya to PBRT'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__Eme0nfpM4Y/TMptQErMo3I/AAAAAAAABEo/QSCmvjUr0nI/s72-c/01_pbrt.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-1725410643086451830</id><published>2009-11-01T02:04:00.000-08:00</published><updated>2009-11-01T20:56:13.992-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='踏青~'/><title type='text'>鯉魚山親山步道</title><content type='html'>今天睡到下午才起床～想說上午下過一場雨，不知道鯉魚山親山步道會不會有什麼新奇好玩的東西出現，就跑去逛了一下，也當作是週末的運動囉！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;從大湖街走到底的入口進去，可以看到刻著"清景大湖"的石頭～&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su208knItHI/AAAAAAAABBY/T3I1PR5gkq4/s1600-h/P1010440.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399170481000068210" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su208knItHI/AAAAAAAABBY/T3I1PR5gkq4/s400/P1010440.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;沿著旁邊的階梯走上去，可以看到這樣的景色～感覺心曠神怡:)&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su2xwz5l2cI/AAAAAAAABBQ/PyBRi6Mftig/s1600-h/P1010441.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399166980410694082" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su2xwz5l2cI/AAAAAAAABBQ/PyBRi6Mftig/s400/P1010441.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;再沿著階梯走下去....有著小溪一條(記得是叫"大溝溪")&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su2th7b1-qI/AAAAAAAABBI/wUSdPxeP8yA/s1600-h/P1010442.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399162326688856738" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su2th7b1-qI/AAAAAAAABBI/wUSdPxeP8yA/s400/P1010442.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;人可以在溪兩旁的石頭上面走，感覺很有趣內！&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Su2qSv7rNkI/AAAAAAAABBA/teufAoTAfSY/s1600-h/P1010443.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399158767368222274" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Su2qSv7rNkI/AAAAAAAABBA/teufAoTAfSY/s400/P1010443.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;再往裏面走～&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su2mzWlJlbI/AAAAAAAABA4/g7hPpkj1-o4/s1600-h/P1010444.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399154929452029362" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su2mzWlJlbI/AAAAAAAABA4/g7hPpkj1-o4/s400/P1010444.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;小橋流水&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su2jOmA8vZI/AAAAAAAABAw/9mk3bwr590U/s1600-h/P1010446.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399150999405116818" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su2jOmA8vZI/AAAAAAAABAw/9mk3bwr590U/s400/P1010446.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Su2dQ_zyzKI/AAAAAAAABAo/fJwYJ3rfriQ/s1600-h/P1010447.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399144443619232930" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Su2dQ_zyzKI/AAAAAAAABAo/fJwYJ3rfriQ/s400/P1010447.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Su2al3hs4UI/AAAAAAAABAg/fXbW2vL_FgY/s1600-h/P1010450.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399141503638233410" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Su2al3hs4UI/AAAAAAAABAg/fXbW2vL_FgY/s400/P1010450.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;旁邊有一條路是往鯉魚山&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su2SV4stE9I/AAAAAAAABAY/lliFQNIRYKY/s1600-h/P1010451.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399132432981890002" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su2SV4stE9I/AAAAAAAABAY/lliFQNIRYKY/s400/P1010451.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;有下過雨果然有差～水明顯的比較大！&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Su2OxFK9EWI/AAAAAAAABAQ/0FD1qSd3b9E/s1600-h/P1010455.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399128502139949410" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Su2OxFK9EWI/AAAAAAAABAQ/0FD1qSd3b9E/s400/P1010455.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;上次有帶幾個同學這裡泡腳&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Su2MXgTxp0I/AAAAAAAABAI/NxTpmT-uFpg/s1600-h/P1010456.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399125863724853058" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Su2MXgTxp0I/AAAAAAAABAI/NxTpmT-uFpg/s400/P1010456.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;～～～忍～～～&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su2IiBsMdYI/AAAAAAAABAA/JtzeQuD-Dzc/s1600-h/P1010457.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399121646437823874" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su2IiBsMdYI/AAAAAAAABAA/JtzeQuD-Dzc/s400/P1010457.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;十幾年前來這裡時，是沒有這座橋的喔！&lt;br /&gt;是有一次颱風把這段路給沖走了，才又加蓋這座橋的！&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su2FlxRF9KI/AAAAAAAAA_4/sT-ZVhWeGaE/s1600-h/P1010463.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399118412213777570" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su2FlxRF9KI/AAAAAAAAA_4/sT-ZVhWeGaE/s400/P1010463.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這是竹節蟲嗎？&lt;br /&gt;在這裡只要留意小地方，可是處處有驚奇的呢！&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su2CV_LXx7I/AAAAAAAAA_w/gsGV_gmMrlM/s1600-h/P1010464.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399114842535086002" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su2CV_LXx7I/AAAAAAAAA_w/gsGV_gmMrlM/s400/P1010464.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su1_H2UR4lI/AAAAAAAAA_o/QfdgooJsFm4/s1600-h/P1010465.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399111301103477330" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su1_H2UR4lI/AAAAAAAAA_o/QfdgooJsFm4/s400/P1010465.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;圓覺瀑布&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su18a2LZOjI/AAAAAAAAA_g/DJRB0P43biM/s1600-h/P1010467.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399108328948841010" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su18a2LZOjI/AAAAAAAAA_g/DJRB0P43biM/s400/P1010467.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;沾滿水珠的蜘蛛網&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Su15Xs-nRpI/AAAAAAAAA_Y/1bF2tBfJfUA/s1600-h/P1010472.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399104976404825746" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Su15Xs-nRpI/AAAAAAAAA_Y/1bF2tBfJfUA/s400/P1010472.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;親山又親水的步道&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su13CfKbVrI/AAAAAAAAA_Q/nyZSvWfGjhY/s1600-h/P1010473.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399102412895770290" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su13CfKbVrI/AAAAAAAAA_Q/nyZSvWfGjhY/s400/P1010473.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;往鯉魚山的階梯&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Su1zR6rOMyI/AAAAAAAAA_I/VQiesP5dL-E/s1600-h/P1010474.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399098279932605218" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Su1zR6rOMyI/AAAAAAAAA_I/VQiesP5dL-E/s400/P1010474.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Su1vJCHvEKI/AAAAAAAAA_A/FpWeAecMUos/s1600-h/P1010475.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399093729265914018" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Su1vJCHvEKI/AAAAAAAAA_A/FpWeAecMUos/s400/P1010475.JPG" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;往上走還有橋喔～&lt;br /&gt;這在我小時候來的時候是沒有的，也是後來修建的！&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Su1rI99cnaI/AAAAAAAAA-4/M9wbichgkIs/s1600-h/P1010477.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399089330102508962" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Su1rI99cnaI/AAAAAAAAA-4/M9wbichgkIs/s400/P1010477.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;幾乎每次來都會看到的－－－－人面蜘蛛　(可愛內～～&gt;/////&lt;) &lt;div&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su1ootYWgQI/AAAAAAAAA-w/TQAvGy07tOk/s1600-h/P1010482.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399086576872882434" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Su1ootYWgQI/AAAAAAAAA-w/TQAvGy07tOk/s400/P1010482.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;鯉魚山上面還有小人國喔！不知道這裡在半夜會不會很熱鬧　XD&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Su1mGBbjsAI/AAAAAAAAA-o/wYvRCGsEAAU/s1600-h/P1010485.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399083781936361474" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Su1mGBbjsAI/AAAAAAAAA-o/wYvRCGsEAAU/s400/P1010485.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;山上所看到的台北盆地～但今天的天氣狀況不好....&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su1iVyxn3lI/AAAAAAAAA-g/PrFo5yNH0SQ/s1600-h/P1010486.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399079654833774162" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su1iVyxn3lI/AAAAAAAAA-g/PrFo5yNH0SQ/s400/P1010486.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;山上的小涼亭&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su1f3JUaytI/AAAAAAAAA-Y/pDuf7T0zbnc/s1600-h/P1010488.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5399076929286097618" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Su1f3JUaytI/AAAAAAAAA-Y/pDuf7T0zbnc/s400/P1010488.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;內湖真是個好山好水的地方呢！&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-1725410643086451830?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/1725410643086451830/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/11/blog-post.html#comment-form' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/1725410643086451830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/1725410643086451830'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/11/blog-post.html' title='鯉魚山親山步道'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__Eme0nfpM4Y/Su208knItHI/AAAAAAAABBY/T3I1PR5gkq4/s72-c/P1010440.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-9095685212202746762</id><published>2009-10-26T01:33:00.000-07:00</published><updated>2009-10-26T02:12:34.343-07:00</updated><title type='text'>立體相機</title><content type='html'>在現在這間公司，除了3D動畫的技術&amp;amp;知識外，我想另一個不小的收穫就是stereo的部份吧！(當然最大的收穫還是~認識很多非常nice的同事！！)&lt;br /&gt;&lt;br /&gt;某次RD meeting時，我們的頭頭--Drake--帶了台朋友借他的stereo相機(富士的FinePix REAL3D)，當下就有幾個同事把玩了起來。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SuViLiiNEWI/AAAAAAAAA-Q/JQznSxJadWE/s1600-h/ap_F23_20091008105233857.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SuViLiiNEWI/AAAAAAAAA-Q/JQznSxJadWE/s400/ap_F23_20091008105233857.jpg" alt="" id="BLOGGER_PHOTO_ID_5396827678861758818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;想說在離職前，也寫一篇跟stereo攀的上邊的東西，當作個小小的紀念囉~&lt;br /&gt;&lt;br /&gt;立體影像的原理很簡單。從早期用的紅藍眼鏡(讓左右眼分別接收不同色系的影像來達到立體的效果)，到現在一般戲院戲院用的偏光眼鏡(讓左右眼分別接收不同頻率的影像來達到立體成像)，都是一樣的目的---左右眼分別接收不同的影像。&lt;br /&gt;&lt;br /&gt;但是要把畫面做的協調好看，又不會讓觀眾看到頭暈看到吐，可是非常需要技術&amp;amp;經驗的累積~不過....不再這篇討論的範圍 ~XD&lt;br /&gt;&lt;br /&gt;這篇只是單純的想秀一下用那台stereo相機拍出來的效果。&lt;br /&gt;&lt;br /&gt;這是拍出來的左眼影像：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SuVh0HdEGtI/AAAAAAAAA-I/zuGdChwwFq4/s1600-h/dscf1245_L.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SuVh0HdEGtI/AAAAAAAAA-I/zuGdChwwFq4/s400/dscf1245_L.jpg" alt="" id="BLOGGER_PHOTO_ID_5396827276455451346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這是拍出來的右眼影像：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SuVhTQTw53I/AAAAAAAAA-A/s6pyk2HCxy0/s1600-h/dscf1245_R.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SuVhTQTw53I/AAAAAAAAA-A/s6pyk2HCxy0/s400/dscf1245_R.jpg" alt="" id="BLOGGER_PHOTO_ID_5396826711896680306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;這是麻煩同事--柏納--幫我用Nuke合出來的影像，戴上紅藍眼鏡就可以看出stereo效果。(新版的Nuke已經可以做出用紅藍眼鏡就能看出立體效果的功能，很有趣吶~)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SuVfjFQD_QI/AAAAAAAAA9w/o0mKcN3fwi8/s1600-h/spin.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SuVfjFQD_QI/AAAAAAAAA9w/o0mKcN3fwi8/s400/spin.png" alt="" id="BLOGGER_PHOTO_ID_5396824784783015170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;當然，還是用偏光眼鏡看到的stereo效果會比較好~但現在一般螢幕只能看紅藍的......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-9095685212202746762?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/9095685212202746762/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/10/blog-post.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/9095685212202746762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/9095685212202746762'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/10/blog-post.html' title='立體相機'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__Eme0nfpM4Y/SuViLiiNEWI/AAAAAAAAA-Q/JQznSxJadWE/s72-c/ap_F23_20091008105233857.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-1799570844308379333</id><published>2009-10-04T22:10:00.000-07:00</published><updated>2009-10-05T02:40:15.039-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='聚餐'/><title type='text'>PTT內湖鄉民中秋烤肉版聚[趴兔](20091004)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Ssm5PwsGc7I/AAAAAAAAA9E/Fu6TU6_mVPY/s1600-h/P1010225.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Ssm5PwsGc7I/AAAAAAAAA9E/Fu6TU6_mVPY/s400/P1010225.JPG" alt="" id="BLOGGER_PHOTO_ID_5389042109544559538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;內湖人團○&lt;br /&gt;千里共嬋娟&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SsmpGyUr9fI/AAAAAAAAA8s/Nd298BTMNv0/s1600-h/P1010229.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SsmpGyUr9fI/AAAAAAAAA8s/Nd298BTMNv0/s400/P1010229.JPG" alt="" id="BLOGGER_PHOTO_ID_5389024363178358258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;眼尖的版友在玻璃上發現趴了隻青蛙(kero~kero~~)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Ssmoc-PPDgI/AAAAAAAAA8k/L9jASE8QbXk/s1600-h/P1010253.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Ssmoc-PPDgI/AAAAAAAAA8k/L9jASE8QbXk/s400/P1010253.JPG" alt="" id="BLOGGER_PHOTO_ID_5389023644822212098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;座位表&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmnppYteWI/AAAAAAAAA8c/niWLTvx13AA/s1600-h/P1010255.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmnppYteWI/AAAAAAAAA8c/niWLTvx13AA/s400/P1010255.JPG" alt="" id="BLOGGER_PHOTO_ID_5389022763051481442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;可愛又有趣的名牌&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmmaFBcKZI/AAAAAAAAA8U/1DEth1-8_-c/s1600-h/P1010257.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmmaFBcKZI/AAAAAAAAA8U/1DEth1-8_-c/s400/P1010257.JPG" alt="" id="BLOGGER_PHOTO_ID_5389021396080535954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmlbRT3FJI/AAAAAAAAA8M/HzlP1u5yTxc/s1600-h/P1010272.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmlbRT3FJI/AAAAAAAAA8M/HzlP1u5yTxc/s400/P1010272.JPG" alt="" id="BLOGGER_PHOTO_ID_5389020317047264402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;專業內！！&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmkXwNhQ3I/AAAAAAAAA78/DbrsoWc-J2Q/s1600-h/P1010276.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmkXwNhQ3I/AAAAAAAAA78/DbrsoWc-J2Q/s400/P1010276.JPG" alt="" id="BLOGGER_PHOTO_ID_5389019157111063410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmjB4ommqI/AAAAAAAAA70/Hq2YMhfWXDY/s1600-h/P1010278.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmjB4ommqI/AAAAAAAAA70/Hq2YMhfWXDY/s400/P1010278.JPG" alt="" id="BLOGGER_PHOTO_ID_5389017681903393442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmdAEkFKqI/AAAAAAAAA7k/m19nt73Q-Vk/s1600-h/P1010284.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmdAEkFKqI/AAAAAAAAA7k/m19nt73Q-Vk/s400/P1010284.JPG" alt="" id="BLOGGER_PHOTO_ID_5389011053676145314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;忘了開閃光...整個黑掉 @@&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmZWYabxVI/AAAAAAAAA7U/YXdYaC_lVhc/s1600-h/P1010295.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmZWYabxVI/AAAAAAAAA7U/YXdYaC_lVhc/s400/P1010295.JPG" alt="" id="BLOGGER_PHOTO_ID_5389007038915003730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;又是忘了開閃光...orz&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmYwhwLR3I/AAAAAAAAA7M/TiR6yNNCbqo/s1600-h/P1010296.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmYwhwLR3I/AAAAAAAAA7M/TiR6yNNCbqo/s400/P1010296.JPG" alt="" id="BLOGGER_PHOTO_ID_5389006388587087730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmW2S1U9QI/AAAAAAAAA7E/462SXfeRu_E/s1600-h/P1010299.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmW2S1U9QI/AAAAAAAAA7E/462SXfeRu_E/s400/P1010299.JPG" alt="" id="BLOGGER_PHOTO_ID_5389004288638121218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmWZ_UKVtI/AAAAAAAAA68/XefoAKn_sy0/s1600-h/P1010300.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmWZ_UKVtI/AAAAAAAAA68/XefoAKn_sy0/s400/P1010300.JPG" alt="" id="BLOGGER_PHOTO_ID_5389003802362402514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;最右邊那位的表情...&lt;br /&gt;good job！ XD&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmV2-mhynI/AAAAAAAAA60/ghSKuO_Q2sU/s1600-h/P1010317.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmV2-mhynI/AAAAAAAAA60/ghSKuO_Q2sU/s400/P1010317.JPG" alt="" id="BLOGGER_PHOTO_ID_5389003200875580018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmVXhjxJTI/AAAAAAAAA6s/WQyWook8a8c/s1600-h/P1010322.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmVXhjxJTI/AAAAAAAAA6s/WQyWook8a8c/s400/P1010322.JPG" alt="" id="BLOGGER_PHOTO_ID_5389002660503430450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmT_q-_31I/AAAAAAAAA6k/iBsYkoDIRPw/s1600-h/P1010324.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmT_q-_31I/AAAAAAAAA6k/iBsYkoDIRPw/s400/P1010324.JPG" alt="" id="BLOGGER_PHOTO_ID_5389001151205072722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;我們第六組的幾位正妹~&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmRra4AjJI/AAAAAAAAA6c/N4vY5il1j_U/s1600-h/P1010329.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmRra4AjJI/AAAAAAAAA6c/N4vY5il1j_U/s400/P1010329.JPG" alt="" id="BLOGGER_PHOTO_ID_5388998604260150418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以下幾張是去每組偷拍的&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmMSsEmcpI/AAAAAAAAA6U/_YN0hoBDkxk/s1600-h/P1010330.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsmMSsEmcpI/AAAAAAAAA6U/_YN0hoBDkxk/s400/P1010330.JPG" alt="" id="BLOGGER_PHOTO_ID_5388992681821500050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmyHw9iQ1I/AAAAAAAAA88/H8OREl1bMt4/s1600-h/P1010340.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmyHw9iQ1I/AAAAAAAAA88/H8OREl1bMt4/s400/P1010340.JPG" alt="" id="BLOGGER_PHOTO_ID_5389034275597337426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;我們第六組的David和S.H.E.(我亂取的啦 XD)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmLBaNId6I/AAAAAAAAA6E/XF3gdSf8mYA/s1600-h/P1010331.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmLBaNId6I/AAAAAAAAA6E/XF3gdSf8mYA/s400/P1010331.JPG" alt="" id="BLOGGER_PHOTO_ID_5388991285456041890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmJMmh5NMI/AAAAAAAAA50/8bMGgcgd3Rk/s1600-h/P1010332.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmJMmh5NMI/AAAAAAAAA50/8bMGgcgd3Rk/s400/P1010332.JPG" alt="" id="BLOGGER_PHOTO_ID_5388989278719653058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmIiVwITZI/AAAAAAAAA5s/7lreO6kQexA/s1600-h/P1010333.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmIiVwITZI/AAAAAAAAA5s/7lreO6kQexA/s400/P1010333.JPG" alt="" id="BLOGGER_PHOTO_ID_5388988552661454226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmH6LtFFxI/AAAAAAAAA5k/PR4J_uRV26I/s1600-h/P1010334.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmH6LtFFxI/AAAAAAAAA5k/PR4J_uRV26I/s400/P1010334.JPG" alt="" id="BLOGGER_PHOTO_ID_5388987862769538834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmG1ssRFII/AAAAAAAAA5U/6imyIIQ6YYY/s1600-h/P1010337.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmG1ssRFII/AAAAAAAAA5U/6imyIIQ6YYY/s400/P1010337.JPG" alt="" id="BLOGGER_PHOTO_ID_5388986686213526658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmGR70AM4I/AAAAAAAAA5M/VGqHTZ0k-hQ/s1600-h/P1010338.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmGR70AM4I/AAAAAAAAA5M/VGqHTZ0k-hQ/s400/P1010338.JPG" alt="" id="BLOGGER_PHOTO_ID_5388986071797216130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmFFvdHQxI/AAAAAAAAA48/hlMQ16w4yi0/s1600-h/P1010341.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmFFvdHQxI/AAAAAAAAA48/hlMQ16w4yi0/s400/P1010341.JPG" alt="" id="BLOGGER_PHOTO_ID_5388984762809926418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;↖煞气a粉腸↘&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmEsd0sXgI/AAAAAAAAA40/gb9WevKqj9E/s1600-h/P1010344.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmEsd0sXgI/AAAAAAAAA40/gb9WevKqj9E/s400/P1010344.JPG" alt="" id="BLOGGER_PHOTO_ID_5388984328580259330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;粉腸跟David烤的香腸超讚的呢！！！&lt;br /&gt;在內湖開一間鐵定會賺~&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SsmEPjaU6sI/AAAAAAAAA4s/DZ6SSTd5PAc/s1600-h/P1010346.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SsmEPjaU6sI/AAAAAAAAA4s/DZ6SSTd5PAc/s400/P1010346.JPG" alt="" id="BLOGGER_PHOTO_ID_5388983831864076994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SsmDwE-WkAI/AAAAAAAAA4k/ZB-9pB_tNW8/s1600-h/P1010348.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SsmDwE-WkAI/AAAAAAAAA4k/ZB-9pB_tNW8/s400/P1010348.JPG" alt="" id="BLOGGER_PHOTO_ID_5388983291117735938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmDLByNydI/AAAAAAAAA4c/jo3R_OD6wEU/s1600-h/P1010361.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmDLByNydI/AAAAAAAAA4c/jo3R_OD6wEU/s400/P1010361.JPG" alt="" id="BLOGGER_PHOTO_ID_5388982654606363090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;讓自己也入鏡一下 XD&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmAtMB9qPI/AAAAAAAAA38/B8g1gFR6sfk/s1600-h/P1010372.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsmAtMB9qPI/AAAAAAAAA38/B8g1gFR6sfk/s400/P1010372.JPG" alt="" id="BLOGGER_PHOTO_ID_5388979942937438450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmBAS1yoOI/AAAAAAAAA4E/RmsNiDwHHdU/s1600-h/P1010371.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 400px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsmBAS1yoOI/AAAAAAAAA4E/RmsNiDwHHdU/s400/P1010371.JPG" alt="" id="BLOGGER_PHOTO_ID_5388980271182946530" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-1799570844308379333?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/1799570844308379333/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/10/ptt20091004.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/1799570844308379333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/1799570844308379333'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/10/ptt20091004.html' title='PTT內湖鄉民中秋烤肉版聚[趴兔](20091004)'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__Eme0nfpM4Y/Ssm5PwsGc7I/AAAAAAAAA9E/Fu6TU6_mVPY/s72-c/P1010225.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-5107242388144459426</id><published>2009-10-04T06:17:00.000-07:00</published><updated>2009-10-04T08:26:40.144-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='聚餐'/><title type='text'>PTT內湖鄉民中秋烤肉版聚(20091004)</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Ssi9fw9XJWI/AAAAAAAAA30/uEDpowzky44/s1600-h/P1010351.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5388765307564664162" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Ssi9fw9XJWI/AAAAAAAAA30/uEDpowzky44/s400/P1010351.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Ssi6fQyaLXI/AAAAAAAAA3s/pesUSP01pLQ/s1600-h/P1010352.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5388762000393907570" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Ssi6fQyaLXI/AAAAAAAAA3s/pesUSP01pLQ/s400/P1010352.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Ssi3txb8gUI/AAAAAAAAA3k/-1o2owPyFpM/s1600-h/P1010353.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5388758951141343554" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Ssi3txb8gUI/AAAAAAAAA3k/-1o2owPyFpM/s400/P1010353.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Ssi02_17foI/AAAAAAAAA3c/nxU346IvjqU/s1600-h/P1010354.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5388755811092364930" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Ssi02_17foI/AAAAAAAAA3c/nxU346IvjqU/s400/P1010354.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Ssix0MFu3fI/AAAAAAAAA3U/WeX4dk-oer8/s1600-h/P1010355.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5388752464305380850" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Ssix0MFu3fI/AAAAAAAAA3U/WeX4dk-oer8/s400/P1010355.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Ssiu0DrTBxI/AAAAAAAAA3M/0jvpWxpfPGo/s1600-h/P1010356.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5388749163512137490" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Ssiu0DrTBxI/AAAAAAAAA3M/0jvpWxpfPGo/s400/P1010356.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsirtfENONI/AAAAAAAAA3E/ZkLy8mCZNJs/s1600-h/P1010357.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5388745752070404306" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsirtfENONI/AAAAAAAAA3E/ZkLy8mCZNJs/s400/P1010357.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsiogmjCfRI/AAAAAAAAA28/MGflIgs3daU/s1600-h/P1010358.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5388742232205589778" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsiogmjCfRI/AAAAAAAAA28/MGflIgs3daU/s400/P1010358.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsijuEbNxhI/AAAAAAAAA20/s8c9AGKic6Y/s1600-h/P1010359.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5388736966005999122" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsijuEbNxhI/AAAAAAAAA20/s8c9AGKic6Y/s400/P1010359.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-5107242388144459426?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/5107242388144459426/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/10/ptt.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5107242388144459426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5107242388144459426'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/10/ptt.html' title='PTT內湖鄉民中秋烤肉版聚(20091004)'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__Eme0nfpM4Y/Ssi9fw9XJWI/AAAAAAAAA30/uEDpowzky44/s72-c/P1010351.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-4109455681439706934</id><published>2009-09-27T19:40:00.000-07:00</published><updated>2009-09-28T04:56:12.472-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='踏青~'/><title type='text'>20090908在墾丁被吉普車玩</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsB76L5E0FI/AAAAAAAAA2k/fV7px5Zdi-E/s1600-h/2009-09-08-14.44.05.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386441393889923154" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 300px; CURSOR: pointer; HEIGHT: 400px" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsB76L5E0FI/AAAAAAAAA2k/fV7px5Zdi-E/s400/2009-09-08-14.44.05.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsB6BMsuDwI/AAAAAAAAA2U/c7xFOfNKeNc/s1600-h/2009-09-08-14.44.12.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386439315342364418" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsB6BMsuDwI/AAAAAAAAA2U/c7xFOfNKeNc/s400/2009-09-08-14.44.12.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsB4ekcWS9I/AAAAAAAAA2M/6N2rrp2-YQY/s1600-h/2009-09-08-14.44.56.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386437620909099986" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsB4ekcWS9I/AAAAAAAAA2M/6N2rrp2-YQY/s400/2009-09-08-14.44.56.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsBz2c8N0KI/AAAAAAAAA2E/OSSGSy3pnNQ/s1600-h/2009-09-08-14.46.34.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386432533653999778" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsBz2c8N0KI/AAAAAAAAA2E/OSSGSy3pnNQ/s400/2009-09-08-14.46.34.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsBtiDotAoI/AAAAAAAAA10/p9QYfCLMEDI/s1600-h/2009-09-08-14.47.04.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386425586194121346" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsBtiDotAoI/AAAAAAAAA10/p9QYfCLMEDI/s400/2009-09-08-14.47.04.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsBs8csfk-I/AAAAAAAAA1s/VQtEhFOIDC0/s1600-h/2009-09-08-14.54.12.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386424940085875682" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsBs8csfk-I/AAAAAAAAA1s/VQtEhFOIDC0/s400/2009-09-08-14.54.12.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsBsIt0AIVI/AAAAAAAAA1k/_IRqbhHMwew/s1600-h/2009-09-08-14.54.41.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386424051327574354" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsBsIt0AIVI/AAAAAAAAA1k/_IRqbhHMwew/s400/2009-09-08-14.54.41.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsBqrkca5LI/AAAAAAAAA1c/d_daDhkHpRI/s1600-h/2009-09-08-14.54.56.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386422451084911794" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsBqrkca5LI/AAAAAAAAA1c/d_daDhkHpRI/s400/2009-09-08-14.54.56.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsBocwreqBI/AAAAAAAAA1U/AAvlINmsaBI/s1600-h/2009-09-08-14.55.20.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386419997648005138" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsBocwreqBI/AAAAAAAAA1U/AAvlINmsaBI/s400/2009-09-08-14.55.20.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsBnhL0RfZI/AAAAAAAAA1M/_JtWfhwMDAQ/s1600-h/2009-09-08-14.55.41.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386418974140497298" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsBnhL0RfZI/AAAAAAAAA1M/_JtWfhwMDAQ/s400/2009-09-08-14.55.41.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsBiavNSm0I/AAAAAAAAA1E/9qBHnUpk2zY/s1600-h/2009-09-08-14.58.54.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386413365823445826" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsBiavNSm0I/AAAAAAAAA1E/9qBHnUpk2zY/s400/2009-09-08-14.58.54.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsBdj9K2X8I/AAAAAAAAA08/i5Hk2d3wsoI/s1600-h/2009-09-08-15.03.07.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386408026631987138" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsBdj9K2X8I/AAAAAAAAA08/i5Hk2d3wsoI/s400/2009-09-08-15.03.07.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsBcR8G_BaI/AAAAAAAAA00/skeyTeCEFEk/s1600-h/2009-09-08-15.03.19.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386406617598068130" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsBcR8G_BaI/AAAAAAAAA00/skeyTeCEFEk/s400/2009-09-08-15.03.19.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsBb5XFMJFI/AAAAAAAAA0s/RGZmY1hDqlU/s1600-h/2009-09-08-15.03.41.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386406195341567058" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SsBb5XFMJFI/AAAAAAAAA0s/RGZmY1hDqlU/s400/2009-09-08-15.03.41.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsBVV9zPTAI/AAAAAAAAA0c/__FuQijCx5Q/s1600-h/2009-09-08-15.04.24.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386398990190201858" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SsBVV9zPTAI/AAAAAAAAA0c/__FuQijCx5Q/s400/2009-09-08-15.04.24.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsBFXzgJf3I/AAAAAAAAA0E/BHnFLZfyC9g/s1600-h/2009-09-08-15.04.37.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386381429599469426" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsBFXzgJf3I/AAAAAAAAA0E/BHnFLZfyC9g/s400/2009-09-08-15.04.37.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsA2mkTK-II/AAAAAAAAAz0/o7jdMbttdcU/s1600-h/2009-09-08-15.04.58.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386365190542129282" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; CURSOR: pointer; HEIGHT: 300px" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SsA2mkTK-II/AAAAAAAAAz0/o7jdMbttdcU/s400/2009-09-08-15.04.58.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-4109455681439706934?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/4109455681439706934/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/09/20090908.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/4109455681439706934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/4109455681439706934'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/09/20090908.html' title='20090908在墾丁被吉普車玩'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__Eme0nfpM4Y/SsB76L5E0FI/AAAAAAAAA2k/fV7px5Zdi-E/s72-c/2009-09-08-14.44.05.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-2613644387543030362</id><published>2009-09-27T00:34:00.000-07:00</published><updated>2009-09-27T01:23:26.682-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GLSL心得'/><title type='text'>(6)在GLSL中，利用sobel描輪廓線</title><content type='html'>&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sr8WsIb7RwI/AAAAAAAAAy8/zkksClGB6uI/s1600-h/friend2.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386048626793072386" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 256px; CURSOR: hand; HEIGHT: 256px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sr8WsIb7RwI/AAAAAAAAAy8/zkksClGB6uI/s400/friend2.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這是一張今年９月初跟朋友去墾丁玩的時候的照片。sobel就是一個把一張灰階的圖片，描出其輪廓線的演算法。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;以下就來用GLSL實做一下sobel。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這裡只有用到fragment shader！&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;流程很簡單，就是先用OpenGL API做出2D貼圖，再用GLSL將其轉成灰階，再將其用sobel瞄出輪廓線。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;先來看一下要set shader的function:(也就只是把之前的例子的vertex shader的部分去掉而已)&lt;/div&gt;&lt;div&gt;&lt;pre style="BORDER-RIGHT: #999999 1px dashed; PADDING-RIGHT: 5px; BORDER-TOP: #999999 1px dashed; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; OVERFLOW: auto; BORDER-LEFT: #999999 1px dashed; WIDTH: 100%; COLOR: #000000; LINE-HEIGHT: 14px; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px dashed; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; BACKGROUND-COLOR: #eee"&gt;&lt;p&gt;&lt;code&gt;void setShaders() {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;char *vs = NULL,*fs = NULL,*fs2 = NULL;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    f = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    fs = textFileRead("sobel.frag");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    const char * ff = fs;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    glShaderSourceARB(f, 1, &amp;amp;ff,NULL);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    free(fs);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;glCompileShaderARB(f);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    p = glCreateProgramObjectARB();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    glAttachObjectARB(p,f);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    glLinkProgramARB(p);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    glUseProgramObjectARB(p);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;/p&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/code&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;再來是先看怎麼在fragment shader中，將其轉成灰階:&lt;/div&gt;&lt;div&gt;&lt;pre style="BORDER-RIGHT: #999999 1px dashed; PADDING-RIGHT: 5px; BORDER-TOP: #999999 1px dashed; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; OVERFLOW: auto; BORDER-LEFT: #999999 1px dashed; WIDTH: 100%; COLOR: #000000; LINE-HEIGHT: 14px; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px dashed; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;uniform sampler2D tex;&lt;br /&gt;float intensity(vec4 color){&lt;br /&gt;    return 0.299*color.r + 0.587*color.g + 0.114*color.b;&lt;br /&gt;}&lt;br /&gt;void main(){&lt;br /&gt;    vec4 a, p;&lt;br /&gt;    p.s=gl_TexCoord[0].s;&lt;br /&gt;    p.t=gl_TexCoord[0].t;&lt;br /&gt;    a=texture2D(tex,p.st);&lt;br /&gt;    float i = intensity(a);&lt;br /&gt;    gl_FragColor = vec4(i, i, i, 1);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/code&gt;&lt;div&gt;&lt;br /&gt;結果如下:&lt;br /&gt;&lt;/div&gt;&lt;code&gt;&lt;div&gt;&lt;/code&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sr8dtq4w3SI/AAAAAAAAAzE/11FdSPYK8f0/s1600-h/gray.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386056349802093858" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 302px" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sr8dtq4w3SI/AAAAAAAAAzE/11FdSPYK8f0/s400/gray.bmp" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;最後來看怎麼在fragment shader中，將其利用sobel瞄出輪廓:&lt;br /&gt;&lt;pre style="BORDER-RIGHT: #999999 1px dashed; PADDING-RIGHT: 5px; BORDER-TOP: #999999 1px dashed; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; OVERFLOW: auto; BORDER-LEFT: #999999 1px dashed; WIDTH: 100%; COLOR: #000000; LINE-HEIGHT: 14px; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px dashed; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; BACKGROUND-COLOR: #eee"&gt;&lt;p&gt;&lt;code&gt;uniform sampler2D tex;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;float intensity(vec4 color){   &lt;br /&gt;    return 0.299*color.r + 0.587*color.g + 0.114*color.b;&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;float sobel(vec4 a1,vec4 a2,vec4 a3,vec4 a4,vec4 a5,vec4 a6,vec4 a7,vec4 a8,vec4 a9)&lt;br /&gt;{   &lt;br /&gt;    float X,Y;  &lt;br /&gt;    vec3 y=vec3(a6.r-a4.r, a3.r-a1.r, a9.r-a7.r);  &lt;br /&gt;    vec3 z=vec3(a2.r-a8.r, a3.r-a9.r, a1.r-a7.r);   &lt;br /&gt;    X=2*y.x+y.y+y.z;    &lt;/p&gt;&lt;p&gt;    Y=2*z.x+z.y+z.z;   &lt;br /&gt;    return (float)sqrt(X*X+Y*Y);&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;void main(){     &lt;/p&gt;&lt;p&gt;    vec4 a1,a2,a3,a4,a5,a6,a7,a8,a9;    &lt;/p&gt;&lt;p&gt;    vec4 p1,p2,p3,p4,p5,p6,p7,p8,p9;    &lt;/p&gt;&lt;p&gt;    vec2 c=vec2(1, 1);&lt;/p&gt;&lt;p&gt;    &lt;/p&gt;&lt;p&gt;    p5.s=gl_TexCoord[0].s;    &lt;/p&gt;&lt;p&gt;    p5.t=gl_TexCoord[0].t;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;    a5=texture2D(tex,p5.st);    &lt;/p&gt;&lt;p&gt;    float i = intensity(a5);        &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;    p1.s=p5.s-c.s/(256);   &lt;br /&gt;    p1.t=p5.t-c.t/(256);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;    p2.s=p5.s;   &lt;br /&gt;    p2.t=p5.t-c.t/(256);&lt;br /&gt;    p3.s=p5.s+c.s/(256);   &lt;br /&gt;    p3.t=p5.t-c.t/(256);&lt;br /&gt;    p4.s=p5.s-c.s/(256);   &lt;br /&gt;    p4.t=p5.t;&lt;br /&gt;    p6.s=p5.s+c.s/(256);   &lt;br /&gt;    p6.t=p5.t;&lt;br /&gt;    p7.s=p5.s-c.s/(256);   &lt;br /&gt;    p7.t=p5.t+c.t/(256);&lt;br /&gt;    p8.s=p5.s;   &lt;br /&gt;    p8.t=p5.t-c.t/(256);&lt;br /&gt;    p9.s=p5.s+c.s/(256);   &lt;br /&gt;    p9.t=p5.t+c.t/(256);&lt;br /&gt;&lt;br /&gt;    a5=texture2D(tex,p5.st);   &lt;br /&gt;    a1=texture2D(tex,p1.st);   &lt;br /&gt;    a2=texture2D(tex,p2.st);   &lt;br /&gt;    a3=texture2D(tex,p3.st);   &lt;br /&gt;    a4=texture2D(tex,p4.st);   &lt;br /&gt;    a6=texture2D(tex,p6.st);   &lt;br /&gt;    a7=texture2D(tex,p7.st);   &lt;br /&gt;    a8=texture2D(tex,p8.st);   &lt;br /&gt;    a9=texture2D(tex,p9.st);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;    float j=sobel(a1,a2,a3,a4,a5,a6,a7,a8,a9);   &lt;br /&gt;    gl_FragColor = vec4(j, j, j, 1); &lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;結果如下圖:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sr8e7Pm837I/AAAAAAAAAzM/jteGp1x5orA/s1600-h/sobel.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386057682509422514" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 302px" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sr8e7Pm837I/AAAAAAAAAzM/jteGp1x5orA/s400/sobel.bmp" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-2613644387543030362?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/2613644387543030362/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/09/6glslsobel.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/2613644387543030362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/2613644387543030362'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/09/6glslsobel.html' title='(6)在GLSL中，利用sobel描輪廓線'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__Eme0nfpM4Y/Sr8WsIb7RwI/AAAAAAAAAy8/zkksClGB6uI/s72-c/friend2.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-186547698811809096</id><published>2009-09-26T22:25:00.000-07:00</published><updated>2009-09-29T19:00:31.620-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GLSL心得'/><title type='text'>(5)多重貼圖{multi-texture}</title><content type='html'>上次聽同事(ypcat)分享他去siggraph的收穫後，才知道OpenGL 3.2已經變成shader base programmig了，也就是不再用以往的glBegin() &amp;amp; glEnd()之類的來建構出geometry primitive，而是會將其寫在vertex buffer object裡。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;感覺挺酷的!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;不過這篇還是用老舊的方式，也就是使用glBegin() &amp;amp; glEnd()來建構出geometry primitive。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;是改自從這個網站 &lt;a href="http://www.lighthouse3d.com/"&gt;http://www.lighthouse3d.com/&lt;/a&gt; 下載來的project；而使用貼圖所用到的function，是從OpenGL超級手冊的範例中拿來用的。&lt;br /&gt;-------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;目的是要將下面這兩張圖:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sr8AukYwGZI/AAAAAAAAAyk/81CJObsFs4k/s1600-h/crate.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386024479399877010" style="margin: 0px 10px 10px 0px; float: left; width: 256px; height: 256px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sr8AukYwGZI/AAAAAAAAAyk/81CJObsFs4k/s400/crate.bmp" border="0" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sr8BAqswUjI/AAAAAAAAAys/IYKhANlz5GI/s1600-h/GodTaiwan.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386024790332035634" style="margin: 0px 10px 10px 0px; float: left; width: 256px; height: 256px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sr8BAqswUjI/AAAAAAAAAys/IYKhANlz5GI/s400/GodTaiwan.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;經由GLSL合併成下圖的樣子:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sr8BU90NffI/AAAAAAAAAy0/TN1bnxMLeJc/s1600-h/multi_tex_out.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5386025139060964850" style="margin: 0px 10px 10px 0px; float: left; width: 320px; height: 320px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sr8BU90NffI/AAAAAAAAAy0/TN1bnxMLeJc/s400/multi_tex_out.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;先來看一下要怎麼透過OpenGL API，傳遞貼圖給GLSL:&lt;/div&gt;&lt;div&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-size: 12px; width: 100%; color: rgb(0, 0, 0); line-height: 14px; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; background-color: rgb(238, 238, 238);"&gt;&lt;p&gt;&lt;code&gt;glBegin(GL_POLYGON); &lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;    //&lt;br /&gt;   &lt;span style="color: rgb(255, 0, 0);"&gt;/*下面這綠色這兩行，作用是同時將GL_TEXTURE0和GL_TEXTURE1，assign給vertex*/&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 102, 0);"&gt;glMultiTexCoord3fARB(GL_TEXTURE0_ARB, 0.0, 1.0, 0.0);&lt;br /&gt;   glMultiTexCoord3fARB(GL_TEXTURE1_ARB, 0.0, 1.0, 0.0);&lt;/span&gt;&lt;br /&gt;   glVertex3f(1*size,1*size,1*size);&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;br /&gt;   //&lt;br /&gt;   &lt;/code&gt;&lt;code&gt;glMultiTexCoord3fARB(GL_TEXTURE0_ARB, 0.0, 0.0, 0.0);&lt;br /&gt;   glMultiTexCoord3fARB(GL_TEXTURE1_ARB, 0.0, 0.0, 0.0);&lt;br /&gt;   glVertex3f(1*size,-1*size,1*size);&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;code&gt;&lt;/code&gt;&lt;p&gt;&lt;br /&gt;   // &lt;/p&gt;&lt;p&gt;    glMultiTexCoord3fARB(GL_TEXTURE0_ARB, 1.0, 0.0, 0.0); &lt;/p&gt;&lt;p&gt;    glMultiTexCoord3fARB(GL_TEXTURE1_ARB, 1.0, 0.0, 0.0);&lt;br /&gt;   glVertex3f(-1*size,-1*size,1*size);&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;　　//&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;    glMultiTexCoord3fARB(GL_TEXTURE0_ARB, 1.0, 1.0, 0.0); &lt;/p&gt;&lt;p&gt;    glMultiTexCoord3fARB(GL_TEXTURE1_ARB, 1.0, 1.0, 0.0); &lt;/p&gt;&lt;p&gt;    glVertex3f(-1*size,1*size,1*size); &lt;/p&gt;&lt;p&gt;glEnd();&lt;/p&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;而texture的資訊，是透過下面的OpenGL API function，assign給GLSL的uniform variable。&lt;/div&gt;&lt;div&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-size: 12px; width: 100%; color: rgb(0, 0, 0); line-height: 14px; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; background-color: rgb(238, 238, 238);"&gt;&lt;p&gt;&lt;code&gt;void renderScene(void) {&lt;br /&gt;   &lt;/code&gt;&lt;code&gt;glClear(GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT);&lt;br /&gt;   glUseProgram(p);&lt;br /&gt;   &lt;span style="color: rgb(255, 0, 0);"&gt;//tex1 &amp;amp; tex2 是在 fragment shader中宣告的uniform variable&lt;br /&gt;   //透過loc1 &amp;amp; loc2 來將讀取到的texture資訊，分別assign給tex1 &amp;amp; tex2&lt;/span&gt;&lt;br /&gt;   loc1 = glGetUniformLocation(p, "&lt;span style="color: rgb(0, 102, 0);"&gt;tex1&lt;/span&gt;");&lt;br /&gt;   loc2 = glGetUniformLocation(p, "&lt;span style="color: rgb(0, 102, 0);"&gt;tex2&lt;/span&gt;");&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;br /&gt;   &lt;span style="color: rgb(255, 0, 0);"&gt;//下面這段，就是先讀取texture資訊，再透過loc1&amp;amp;loc2分別assign給tex1 &amp;amp; tex2&lt;br /&gt;   //其中TextureLoad是從openGL超級手冊的範例拿來用的function&lt;br /&gt;   //(懶的解釋每個fuction的用途 XD)&lt;/span&gt;&lt;br /&gt;   &lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;glActiveTexture(&lt;span style="color: rgb(0, 0, 153);"&gt;GL_TEXTURE0_ARB&lt;/span&gt;);&lt;br /&gt;   text1=TextureLoad("crate.bmp", GL_FALSE, GL_LINEAR, GL_LINEAR, GL_REPEAT);&lt;br /&gt;   glBindTexture(GL_TEXTURE_2D, text1);&lt;br /&gt;   glEnable(GL_TEXTURE_2D);&lt;br /&gt;   glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);&lt;br /&gt;   glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE);&lt;br /&gt;   glUniform1i(&lt;span style="color: rgb(0, 0, 153);"&gt;loc1, 0&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;    &lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;glDisable(GL_TEXTURE_2D);&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;br /&gt;   glActiveTexture(&lt;span style="color: rgb(0, 0, 153);"&gt;GL_TEXTURE1_ARB&lt;/span&gt;);&lt;br /&gt;   text2 = TextureLoad("GodTaiwan.bmp", GL_FALSE, GL_LINEAR, GL_LINEAR, GL_CLAMP);&lt;br /&gt;   glBindTexture(GL_TEXTURE_2D, text2);&lt;br /&gt;   glEnable(GL_TEXTURE_2D);&lt;br /&gt;   glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);&lt;br /&gt;   glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_INCR);&lt;br /&gt;   glUniform1i(&lt;span style="color: rgb(0, 0, 153);"&gt;loc2, 1&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;    &lt;/code&gt;&lt;code&gt;glLoadIdentity();&lt;br /&gt;   gluLookAt(5.0,0.0,0.0,&lt;br /&gt;             0.0,0.0,0.0,&lt;br /&gt;             0.0f,1.0f,0.0f);&lt;br /&gt;   glLightfv(GL_LIGHT0, GL_POSITION, lpos);&lt;br /&gt;   glRotatef(a,0,1,1);&lt;br /&gt;   drawBox(1);&lt;br /&gt;   a+=0.1;&lt;br /&gt;   &lt;/code&gt;&lt;code&gt;glutSwapBuffers();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;code&gt; &lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;最後，來看一下Vertex &amp;amp; Fragment shader裡是怎麼寫的吧~&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Vertex Shader:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre style="border-width: 1px; border-top: 1px dashed rgb(153, 153, 153); border-left: 1px dashed rgb(153, 153, 153); border-right: 1px dashed rgb(153, 153, 153); overflow: auto; padding-right: 5px; padding-left: 5px; width: 100%;"&gt;&lt;code&gt;void main(void)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//用來使用貼圖的內建array&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;gl_TexCoord[0]&lt;/span&gt; = gl_MultiTexCoord0;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;gl_TexCoord[1]&lt;/span&gt; = gl_MultiTexCoord1;&lt;br /&gt;gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Fragment Shader&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre style="border-width: 1px; border-top: 1px dashed rgb(153, 153, 153); border-left: 1px dashed rgb(153, 153, 153); border-right: 1px dashed rgb(153, 153, 153); overflow: auto; padding-right: 5px; padding-left: 5px; width: 100%;"&gt;&lt;code&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//用來讀取從外部傳入的texture的資訊的變數&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;uniform sampler2D tex1;&lt;br /&gt;uniform sampler2D tex2;&lt;br /&gt;&lt;/span&gt;void main (void)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//這....看也知道吧 XD........不然就咕狗囉&lt;/span&gt;&lt;br /&gt;vec4 texval1 = texture2D(tex1, vec2(gl_TexCoord[0]));&lt;br /&gt;vec4 texval2 = texture2D(tex2, vec2(gl_TexCoord[1]));&lt;br /&gt;gl_FragColor = 0.5*(1.0*texval1 + 1.0*texval2);&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//用來讀取從外部傳入的texture的資訊的變數&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;uniform sampler2D tex1;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;uniform sampler2D tex2;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;void main (void)&lt;/div&gt;&lt;div&gt;{ &lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//這....看也知道吧 XD........不然就咕狗囉&lt;/span&gt;&lt;/div&gt;&lt;div&gt;vec4 texval1 = texture2D(tex1, vec2(gl_TexCoord[0])); &lt;/div&gt;&lt;div&gt;vec4 texval2 = texture2D(tex2, vec2(gl_TexCoord[1])); &lt;/div&gt;&lt;div&gt;gl_FragColor = 0.5*(1.0*texval1 + 1.0*texval2);&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div&gt;}&lt;/div&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-186547698811809096?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/186547698811809096/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/09/5.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/186547698811809096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/186547698811809096'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/09/5.html' title='(5)多重貼圖{multi-texture}'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__Eme0nfpM4Y/Sr8AukYwGZI/AAAAAAAAAyk/81CJObsFs4k/s72-c/crate.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-8981405654421377502</id><published>2009-09-25T23:11:00.000-07:00</published><updated>2009-09-26T01:32:32.810-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GLSL心得'/><title type='text'>(4)簡單的光照</title><content type='html'>最近看到很有感觸的一句話：&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(255, 102, 0); font-family: times new roman;font-size:180%;" &gt;人最可怕的不是過去，而是不肯改變自己！&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;共勉之～&lt;br /&gt;&lt;br /&gt;－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－&lt;br /&gt;&lt;br /&gt;這是改寫自ShaderDesigner的一個名叫'dimple'的範例(如下)：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sr2zs5UJ6EI/AAAAAAAAAyU/Wrxi9QwusU0/s1600-h/glslLit002.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 309px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sr2zs5UJ6EI/AAAAAAAAAyU/Wrxi9QwusU0/s400/glslLit002.jpg" alt="" id="BLOGGER_PHOTO_ID_5385658313285953602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;改出來的結果如下圖：茶壺的上方及右邊個有一個光源打向茶壺~&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sr21OgCByqI/AAAAAAAAAyc/C8BK030oPJ4/s1600-h/glslLit001.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 309px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sr21OgCByqI/AAAAAAAAAyc/C8BK030oPJ4/s400/glslLit001.jpg" alt="" id="BLOGGER_PHOTO_ID_5385659990126217890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;改出來的Vertex &amp;amp; Fragment  shader分別如下：&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Vertex Shader:&lt;/span&gt;&lt;br /&gt;&lt;pre   style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); line-height: 14px; width: 100%;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;font-size:12px;"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//光源的方向&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;varying vec3&lt;/span&gt; LightDir;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;varying vec3&lt;/span&gt; LightDir2;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//視角的方向&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;varying vec3&lt;/span&gt; EyeDir;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;varying vec3&lt;/span&gt; Normal;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//uniform vec3 LightPosition;&lt;br /&gt;&lt;br /&gt;//uniform float Scale;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void main(void)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;float&lt;/span&gt; Scale = 3.0;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//讀取每個vertex的位置&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec4&lt;/span&gt; pos = gl_ModelViewMatrix * gl_Vertex;&lt;br /&gt;&lt;br /&gt;gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//指定視角的方向&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec3&lt;/span&gt; eyeDir = vec3(pos);&lt;br /&gt;&lt;br /&gt;gl_TexCoord[0] = gl_MultiTexCoord0;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//宣告一個不為０的向量，用來計算出與每個vertex的normal垂直的平面的base&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        //用g或是g2都可以，但結果會有些許不同，因為計算出來的base會有所不同&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec3&lt;/span&gt; g = vec3(1.414, 2.78, 3.14);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec3&lt;/span&gt; g2 = vec3(0,1,0);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//vertex的法向量&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec3&lt;/span&gt; n = normalize(gl_NormalMatrix * gl_Normal);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//t與n垂直&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec3&lt;/span&gt; t = normalize(cross(g, n));&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//b與n以及t垂直，故b,t構成與n垂直的平面的base&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec3&lt;/span&gt; b = cross(n, t);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec3&lt;/span&gt; v, v2;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//指定兩個光源的位置，一個從上方，一個從右邊&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec3&lt;/span&gt; newLitPos = vec3(0,1,0);&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec3&lt;/span&gt; newLitPos2 = vec3(1,0,0);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//用v和v2，分別來紀錄兩個方向的光源，對每個vertex的貢獻度(亮度)&lt;/span&gt;&lt;br /&gt;v.x = dot(newLitPos, t);&lt;br /&gt;v.y = dot(newLitPos, b);&lt;br /&gt;v.z = dot(newLitPos, n);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;v2.x = dot(newLitPos2, t);&lt;br /&gt;v2.y = dot(newLitPos2, b);&lt;br /&gt;v2.z = dot(newLitPos2, n);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; //再將normalize後的v和v2設給光源方向&lt;/span&gt;&lt;br /&gt;LightDir = normalize(v);&lt;br /&gt;LightDir2 = normalize(v2);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;EyeDir = normalize(eyeDir);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;Fragment Shader:&lt;/span&gt;&lt;br /&gt;&lt;pre   style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); line-height: 14px; width: 100%;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;font-size:12px;"&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;varying vec3&lt;/span&gt; LightDir;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;varying vec3&lt;/span&gt; LightDir2;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;varying vec3&lt;/span&gt; EyeDir;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;varying vec3&lt;/span&gt; Normal;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;const vec3&lt;/span&gt; color = vec3(0.7, 0.6, 0.18);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;const float&lt;/span&gt; SpecularFactor = 0.75;&lt;br /&gt;&lt;br /&gt;void main (void)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;float&lt;/span&gt; Density = 16.0;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;float&lt;/span&gt; Size = 0.0;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; //initialize 光的顏色&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   vec3&lt;/span&gt; litColor=0.0;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec2&lt;/span&gt; c = Density * (gl_TexCoord[0].xy);&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; vec2&lt;/span&gt; p = fract(c) - vec2(0.5);&lt;br /&gt;float d = (p.x * p.x) + (p.y * p.y);&lt;br /&gt;if (d &amp;gt;= Size)&lt;br /&gt;     p = vec2(0.0);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//指定一個與螢幕方向垂直的向量&lt;/span&gt;&lt;br /&gt;vec3 normDelta = vec3(0, 0, 1.0);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; //計算從螢幕看出去，兩個光源方向對物體的貢獻度，並乘上顏色&lt;/span&gt;&lt;br /&gt;litColor = color * max(0.0, dot(normDelta, LightDir));&lt;br /&gt;litColor = litColor +  color * max(0.0, dot(normDelta, LightDir2));&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//計算反射光的方向&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;float&lt;/span&gt; t = 2.0 * dot(LightDir, normDelta);&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;float&lt;/span&gt; t2 = 2.0 * dot(LightDir2, normDelta);&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec3&lt;/span&gt; reflectDir = (1.0*(t)) * normDelta;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;vec3&lt;/span&gt; reflectDir2 = (1.0*(t2)) * normDelta;&lt;br /&gt;reflectDir = LightDir - reflectDir;&lt;br /&gt;reflectDir2 = LightDir2 - reflectDir2;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; //計算兩個光源，相對於視角的specular強度&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;float&lt;/span&gt; spec = max(dot(EyeDir, reflectDir), 0.0);&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; float&lt;/span&gt; spec2 = max(dot(EyeDir, reflectDir2), 0.0);&lt;br /&gt;&lt;br /&gt;spec = spec * spec+spec2*spec2;&lt;br /&gt;spec *= SpecularFactor;&lt;br /&gt;&lt;br /&gt;litColor = min(litColor + spec, vec3(1.0));&lt;br /&gt;gl_FragColor = vec4(litColor, 1.0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;補充說明一下~~宣告為&lt;span style="color: rgb(0, 0, 153);"&gt;varying&lt;/span&gt;的變數，簡單來說，是Vertex和Fragment shader共享的變數。而宣告為&lt;span style="color: rgb(0, 0, 153);"&gt;uniform&lt;/span&gt;的變數，是可以從shader外部assign值給它的變數。&lt;br /&gt;&lt;br /&gt;　&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-8981405654421377502?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/8981405654421377502/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/09/4.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8981405654421377502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8981405654421377502'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/09/4.html' title='(4)簡單的光照'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__Eme0nfpM4Y/Sr2zs5UJ6EI/AAAAAAAAAyU/Wrxi9QwusU0/s72-c/glslLit002.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-1487959400084041305</id><published>2009-09-09T18:42:00.000-07:00</published><updated>2009-09-26T00:33:26.710-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='踏青~'/><title type='text'>墾丁浮潛&amp;香蕉船</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SqhaNJn88ZI/AAAAAAAAAxQ/cKWRyAML-OU/s1600-h/F23_20090907052834701.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5379648936862347666" style="margin: 0pt 10px 10px 0pt; float: left; width: 400px; cursor: pointer; height: 300px;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SqhaNJn88ZI/AAAAAAAAAxQ/cKWRyAML-OU/s400/F23_20090907052834701.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SqhaG0QDgnI/AAAAAAAAAxI/2D5b759hk5c/s1600-h/F23_20090907052835470.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5379648828045754994" style="margin: 0pt 10px 10px 0pt; float: left; width: 400px; cursor: pointer; height: 300px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SqhaG0QDgnI/AAAAAAAAAxI/2D5b759hk5c/s400/F23_20090907052835470.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SqhZ_ANiNgI/AAAAAAAAAxA/2hMzho3bIe0/s1600-h/F23_20090907052838525.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5379648693817456130" style="margin: 0pt 10px 10px 0pt; float: left; width: 400px; cursor: pointer; height: 300px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SqhZ_ANiNgI/AAAAAAAAAxA/2hMzho3bIe0/s400/F23_20090907052838525.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SqhZ3NkrktI/AAAAAAAAAw4/-LA8q88Wg_k/s1600-h/F23_20090907052839647.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5379648559965246162" style="margin: 0pt 10px 10px 0pt; float: left; width: 400px; cursor: pointer; height: 300px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SqhZ3NkrktI/AAAAAAAAAw4/-LA8q88Wg_k/s400/F23_20090907052839647.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SqhZr3aa8YI/AAAAAAAAAww/ob92vY-hWlY/s1600-h/F23_20090907052840229.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5379648365038072194" style="margin: 0pt 10px 10px 0pt; float: left; width: 400px; cursor: pointer; height: 300px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SqhZr3aa8YI/AAAAAAAAAww/ob92vY-hWlY/s400/F23_20090907052840229.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SqhZlLDghdI/AAAAAAAAAwo/jZloIA4WAPI/s1600-h/F23_20090907051902383.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5379648250051593682" style="margin: 0pt 10px 10px 0pt; float: left; width: 400px; cursor: pointer; height: 300px;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SqhZlLDghdI/AAAAAAAAAwo/jZloIA4WAPI/s400/F23_20090907051902383.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SqzbLVNgvOI/AAAAAAAAAxY/3eqGkuTD-wY/s1600-h/P1010193.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5380916642519760098" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 300px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SqzbLVNgvOI/AAAAAAAAAxY/3eqGkuTD-wY/s400/P1010193.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;特別要感謝一下耿摯和乃芯用心的規劃這次行程，很讚很棒！！！&lt;br /&gt;還要感激當司機的敏恩和耿摯，很辛苦吶~&lt;br /&gt;也要感激當財務大臣的欣怡(不知道有沒有打錯名字 @@)，真是個精明幹練的女強人！&lt;br /&gt;最後是很感激很開心可以跟這麼棒的一群人出去玩 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-1487959400084041305?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/1487959400084041305/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/09/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/1487959400084041305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/1487959400084041305'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/09/blog-post.html' title='墾丁浮潛&amp;香蕉船'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__Eme0nfpM4Y/SqhaNJn88ZI/AAAAAAAAAxQ/cKWRyAML-OU/s72-c/F23_20090907052834701.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-8013975176779239754</id><published>2009-08-31T01:28:00.000-07:00</published><updated>2009-08-31T10:37:00.315-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GLSL心得'/><title type='text'>(3)第一個GLSL程式 part[下]</title><content type='html'>&lt;p&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-3f667c0b833e894d" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v4.nonxt4.googlevideo.com/videoplayback?id%3D3f667c0b833e894d%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330270183%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D176B3A5DEC69EF765337B9C0F7470E289BB43157.854629E085F618332EF2B1661EC6BB2E84EA06A1%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D3f667c0b833e894d%26offsetms%3D5000%26itag%3Dw160%26sigh%3DRJEJ4EUwq1fyoti6Rsbg3VVf4yM&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v4.nonxt4.googlevideo.com/videoplayback?id%3D3f667c0b833e894d%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330270183%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D176B3A5DEC69EF765337B9C0F7470E289BB43157.854629E085F618332EF2B1661EC6BB2E84EA06A1%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D3f667c0b833e894d%26offsetms%3D5000%26itag%3Dw160%26sigh%3DRJEJ4EUwq1fyoti6Rsbg3VVf4yM&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;先來分享一首老歌~Bon Jovi的All About Loving You~&lt;br /&gt;覺得這MV老歸老，但是屌到掉渣!&lt;/p&gt;&lt;p&gt;------------------------------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;上一篇的Hello World解壓縮後，其主程式(ogl3.cpp)裡用OpenGL API來設置GLSL的function如下: &lt;span style="color:#cc0000;"&gt;(有解釋錯誤的地方，請不吝指教 @@)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre style="BORDER-RIGHT: #999999 1px dashed; PADDING-RIGHT: 5px; BORDER-TOP: #999999 1px dashed; PADDING-LEFT: 5px; BORDER-BOTTOM-WIDTH: 1px; OVERFLOW: auto; BORDER-LEFT: #999999 1px dashed; WIDTH: 100%; BORDER-BOTTOM-: 5pxcolor:#999999;" &gt;&lt;code&gt;void setShaders() {&lt;br /&gt;    char *vs = NULL,*fs = NULL;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#ff0000;"&gt;/*GLuint glCreateShader(GLenum shaderTypr)&lt;br /&gt;        顧名思義，就是建立存放shader的變數囉*/&lt;br /&gt;&lt;/span&gt;    v = glCreateShader(GL_&lt;span style="color:#000000;"&gt;VE&lt;/span&gt;RTEX_SHADER);&lt;br /&gt;    f = glCreateShader(GL_FRAGMENT_SHADER);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#ff0000;"&gt;/*讀取vertex shader 和 fragment shader的內容*/&lt;br /&gt;&lt;/span&gt;    vs = textFileRead("minimal.vert");&lt;br /&gt;    fs = textFileRead("minimal.frag");&lt;br /&gt;&lt;br /&gt;    const char * vv = vs;&lt;br /&gt;    const char * ff = fs;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#ff0000;"&gt;/*void glShaderSource(GLuint &lt;span style="color:#000099;"&gt;shader&lt;/span&gt;,&lt;br /&gt;                                            GLsizei &lt;span style="color:#000099;"&gt;count&lt;/span&gt;,&lt;br /&gt;                                            const GLchar **&lt;span style="color:#000099;"&gt;string&lt;/span&gt;,&lt;br /&gt;                                            const GLint *&lt;span style="color:#000099;"&gt;length&lt;/span&gt;)&lt;br /&gt;        ◎將&lt;span style="color:#000099;"&gt;shader&lt;/span&gt;的source code設成&lt;span style="color:#000099;"&gt;string&lt;/span&gt;(array of strings)的內容，而在&lt;span style="color:#000099;"&gt;string&lt;/span&gt;&lt;br /&gt;            這個string array中有幾個string是由&lt;span style="color:#000099;"&gt;count&lt;/span&gt; 決定.&lt;br /&gt;        ◎如果&lt;span style="color:#000099;"&gt;length&lt;/span&gt; = NULL，則每個string的結尾為null，否則其皆為指定&lt;span style="color:#000099;"&gt;string&lt;/span&gt;&lt;br /&gt;            中每個元素的長度&lt;br /&gt;        ◎每個在&lt;/span&gt;&lt;span style="color:#000099;"&gt;length &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;這個array中的元素，皆為其所對應的string的長度，若其&lt;br /&gt;            值小於0，則說明所對應的string的結尾為null&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;*/&lt;br /&gt;&lt;/span&gt;    glShaderSource(v, 1, &amp;amp;vv,NULL);&lt;br /&gt;    glShaderSource(f, 1, &amp;amp;ff,NULL);&lt;br /&gt;&lt;br /&gt;    free(vs);&lt;br /&gt;    free(fs);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#ff0000;"&gt;/*void glCompileShader(GLuint &lt;span style="color:#000099;"&gt;shader&lt;/span&gt;)&lt;br /&gt;        &lt;span style="color:#000099;"&gt;shader&lt;/span&gt;為所要compile的shader object*/&lt;br /&gt;&lt;/span&gt;    glCompileShader(v);&lt;br /&gt;    glCompileShader(f);&lt;br /&gt;&lt;br /&gt;    printShaderInfoLog(v);&lt;br /&gt;    printShaderInfoLog(f);&lt;br /&gt;  &lt;br /&gt;    &lt;span style="color:#ff0000;"&gt;/*GLuint glCreateProgram(void)&lt;br /&gt;       ◎glCreateProgram建置一個空的program object及傳回一個non-zero&lt;br /&gt;           value來reference用&lt;br /&gt;       ◎其所建置的program object可用來給shader object attach*/&lt;/span&gt;&lt;br /&gt;    p = glCreateProgram();&lt;br /&gt;&lt;br /&gt;    glAttachShader(p,v);&lt;br /&gt;    glAttachShader(p,f);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#ff0000;"&gt;/*void glLinkProgram(GLuint &lt;span style="color:#000099;"&gt;program&lt;/span&gt;)&lt;br /&gt;        ◎如shader object為GL_VERTEX_SHADER且已attach在&lt;span style="color:#000099;"&gt;program&lt;/span&gt;上，&lt;br /&gt;            則此function在programmable vertex processer上是可執行的&lt;br /&gt;        ◎program是程序容器，在此function執行後，可以任意修改shader的&lt;br /&gt;            原代碼，對shader重新compile不會影響整個程序，除非重新連接程序*/&lt;br /&gt;&lt;/span&gt;    glLinkProgram(p);&lt;br /&gt;&lt;br /&gt;    printProgramInfoLog(p);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#ff0000;"&gt;/*void UseProgram(GLuint program)&lt;br /&gt;       用來加載並使用連接好的程序*/&lt;/span&gt;&lt;br /&gt;    glUseProgram(p);&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;接著來小小介紹一下vertex shader和fragment shader吧~&lt;/p&gt;&lt;p&gt;對於要顯示出來的物件(ex:teapot, cube, sphere...etx)，GPU會對其頂點(vertex)進行處理，並將之轉換成螢幕空間幾何體(screen-space geometry)，該幾何體透過光柵化(rasterization)過程依次被劃分為畫素片段(pixel-sized fragment)。每一片段與螢幕上的一個畫素位置相關。最後，這些片段被處理並組合到由畫素組成的影像中。&lt;/p&gt;&lt;p&gt;而vertex shader和fragment shader，分別為GPU越來處理vertex以及pixel-sized fragment所用的code。&lt;/p&gt;&lt;p&gt;最後來看看這個範例的vertex shader和fragment shader裡寫了些什麼吧~&lt;/p&gt;&lt;p&gt;&lt;span style="color:#006600;"&gt;Vertex Shader:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style="BORDER-RIGHT: #999999 1px dashed; PADDING-RIGHT: 5px; BORDER-TOP: #999999 1px dashed; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; OVERFLOW: auto; BORDER-LEFT: #999999 1px dashed; WIDTH: 100%; COLOR: #000000; LINE-HEIGHT: 14px; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px dashed; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;&lt;br /&gt;// minimal vertex shader&lt;br /&gt;// &lt;a href="http://www.lighthouse3d.com/"&gt;http://www.lighthouse3d.com/&lt;/a&gt;&lt;br /&gt;void main(){ &lt;br /&gt;    // the following three lines provide the same result&lt;br /&gt;    &lt;span style="color:#ff0000;"&gt;/*&lt;br /&gt;    #更新gl_Position的內容，就是在告知GPU某個頂點轉換到螢幕座標系上的結&lt;br /&gt;       果&lt;br /&gt;   #讀取gl_Vertex就可以取得頂點的位置&lt;br /&gt;   #glModelViewProjectionMatrix是內建變數，它可以取得經由C/C++呼叫&lt;br /&gt;     glLoadMatrixf等矩陣操作函式所設定的矩陣內容&lt;br /&gt;    */&lt;br /&gt;&lt;/span&gt;    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;&lt;br /&gt;    &lt;span style="color:#ff0000;"&gt;/*gl_ProjectionMatrix*gl_ModelViewMatrix=gl_ModelViewProjectionMatrix*/&lt;/span&gt; &lt;br /&gt;    //gl_Position=gl_ProjectionMatrix*gl_ModelViewMatrix*gl_Vertex;&lt;br /&gt;    &lt;span style="color:#ff0000;"&gt;/*上面兩個等號右邊的東西，可以用一個內建function:ftransform();來取代*/&lt;/span&gt;    &lt;br /&gt;    //gl_Position = ftransform();&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#006600;"&gt;Fragment Shader:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre style="BORDER-RIGHT: #999999 1px dashed; PADDING-RIGHT: 5px; BORDER-TOP: #999999 1px dashed; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; OVERFLOW: auto; BORDER-LEFT: #999999 1px dashed; WIDTH: 100%; COLOR: #000000; LINE-HEIGHT: 14px; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px dashed; FONT-FAMILY: Andale Mono, Lucida Console, Monaco, fixed, monospace; BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;&lt;br /&gt;// minimal fragment shader&lt;br /&gt;// &lt;a href="http://www.lighthouse3d.com/"&gt;http://www.lighthouse3d.com/&lt;/a&gt;&lt;br /&gt;void main(){&lt;br /&gt;     &lt;span style="color:#ff0000;"&gt;/*gl_FragColor代表物件在畫面上所要顯示的顏色*/&lt;/span&gt;  &lt;br /&gt;     gl_FragColor = vec4(0.4,0.4,0.8,1.0);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-8013975176779239754?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=3f667c0b833e894d&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/8013975176779239754/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/08/31glslpart.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8013975176779239754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8013975176779239754'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/08/31glslpart.html' title='(3)第一個GLSL程式 part[下]'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-3272418191377594296</id><published>2009-08-29T23:31:00.000-07:00</published><updated>2009-08-31T19:13:59.624-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GLSL心得'/><title type='text'>(2)第一個GLSL程式 part[上]</title><content type='html'>這兩天在玩一個小遊戲---&gt;死亡打字機&lt;br /&gt;&lt;br /&gt;是去一個大學同學的租屋處play時，他向我和另一個同學介紹的，當下就向他copy回家玩 XD&lt;br /&gt;&lt;br /&gt;對於一般線上遊戲興趣缺缺的我，卻很喜歡玩這種有趣的3D小遊戲&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這遊戲對於像我這種英打不快的人而言，真是個有趣又可以練打字的遊戲&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Spoy0UysCKI/AAAAAAAAAvo/DnpwAlFTsWw/s1600-h/deadKry.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5375664979736004770" style="margin: 0px 10px 10px 0px; float: left; width: 487px; height: 343px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Spoy0UysCKI/AAAAAAAAAvo/DnpwAlFTsWw/s400/deadKry.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;由上面的畫面可以看到---要key下顯示在每個殭屍前的英文字，才可以打死殭屍。打不死他們就換自己死了~ XD&lt;br /&gt;而且....不像上圖每個殭屍前只有兩個英文字母這麼簡單，有些還是問答題，要key入正確的答案才能過關!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;相信每天過一關....全破後，我就會有神一般的英打速度(握拳!)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------分隔線--------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這裡用的OpenGL版本是2.0，編輯器是用Visual Studio.Net 2005&lt;br /&gt;&lt;br /&gt;除了安裝設定好OpenGL，還要下載OpenGL Extension Wrangler Library (GLEW)，並做好相關設定。&lt;br /&gt;&lt;br /&gt;可以去這裡下載GLEW: &lt;a href="http://glew.sourceforge.net/"&gt;http://glew.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;但是基本上現在顯卡的driver安裝好後，以上所需要用到的檔案(*.h , *.lib...etc)都可以在driver的安裝路徑中找到。&lt;br /&gt;(這年頭不支援GPU的顯卡應該也賣不出去吧) &lt;/p&gt;&lt;p&gt;&lt;/p&gt;但還有一點要注意的，就是要在Visual Studio的專案-&gt;屬性，做如下圖的設定:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SpookUvzCxI/AAAAAAAAAvg/olHCzFLEKUY/s1600-h/0001.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5375653709729696530" style="margin: 0px 10px 10px 0px; float: left; width: 400px; height: 288px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SpookUvzCxI/AAAAAAAAAvg/olHCzFLEKUY/s400/0001.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;接下來....去下面這個網站download 他的 Hello World 範例來play一下:&lt;br /&gt;&lt;a href="http://www.lighthouse3d.com/opengl/glsl/index.php?intro"&gt;http://www.lighthouse3d.com/opengl/glsl/index.php?intro&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(這也是個很棒的GLSL教學網站喔)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;解壓縮那個Hello World後，可以看到裡面有一個&lt;span style="color: rgb(0, 0, 153);"&gt;minimal.frag&lt;/span&gt;和一個&lt;span style="color: rgb(0, 0, 153);"&gt;minimal.vert&lt;/span&gt;，分別為fragment shader和vertex shader。&lt;br /&gt;&lt;br /&gt;開啟project並執行後可以看到如下圖結果:&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5375736970499088194" style="margin: 0px auto 10px; display: block; width: 400px; height: 320px; text-align: center;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Spp0SvSIX0I/AAAAAAAAAvw/4Mi0gDzJ7kE/s400/0002.jpg" border="0" /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;至於程式怎麼運作的以及什麼是vertex shader 和 fragment shader就留到下一篇再介紹囉~&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-3272418191377594296?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/3272418191377594296/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/08/2glsl.html#comment-form' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/3272418191377594296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/3272418191377594296'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/08/2glsl.html' title='(2)第一個GLSL程式 part[上]'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__Eme0nfpM4Y/Spoy0UysCKI/AAAAAAAAAvo/DnpwAlFTsWw/s72-c/deadKry.bmp' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-6844849913053980409</id><published>2009-08-26T18:32:00.000-07:00</published><updated>2009-08-27T08:02:36.672-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GLSL心得'/><title type='text'>(1)一些GLSL的editor</title><content type='html'>最近心血來潮，想說把以前從網路上整理的GLSL資料拿來看，發現整個忘的差不多了.....orz&lt;br /&gt;&lt;br /&gt;想想，是該整理一些心得出來的時候了，是自己曾經會的東西，不想就這樣讓它隨風而逝，總該留點痕跡下來阿阿阿～&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這篇就小小介紹一下GLSL以及有哪些編輯器囉!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;什麼是GPU shader呢？簡單來說就是像RenderMan shader一樣，不一樣的是，RenderMan shader吃的是CPU的資源，而GPU shader吃的是GPU的資源。比較有名可以支援GPU shader的shading language有Cg、HLSL(DirectX的High Level Shading Language)以及GLSL(OpenGL Shading Language)。或許是因為跟OpenGL比較熟的緣故，個人比較喜歡GLSL～XD&lt;br /&gt;&lt;br /&gt;下面列出三項網路上抓的到的GLSL editor：&lt;br /&gt;&lt;br /&gt;(1)QShaderEditor....這似乎只有出Linux版的&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SpXitnccM2I/AAAAAAAAAvI/nSdvTmwqv6c/s1600-h/glsl_0001.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5374451003646817122" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 243px" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SpXitnccM2I/AAAAAAAAAvI/nSdvTmwqv6c/s320/glsl_0001.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(2)RenderMonkey( http://developer.amd.com/gpu/rendermonkey/Pages/default.aspx )&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SpXiokEDkTI/AAAAAAAAAvA/wfmpsMiyo2I/s1600-h/glsl_0002.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5374450916839887154" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 244px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SpXiokEDkTI/AAAAAAAAAvA/wfmpsMiyo2I/s320/glsl_0002.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(3)ShaderDesigner( http://www.typhoonlabs.com/ )&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SpXiiVatSnI/AAAAAAAAAu4/gbukLgWsHBQ/s1600-h/glsl_0003.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5374450809829149298" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 247px" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SpXiiVatSnI/AAAAAAAAAu4/gbukLgWsHBQ/s320/glsl_0003.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Houdini9.5之後，也可以在裡面寫GLSL shader來即時顯示。圖中的Torus為toon、Sphere為diffuse、Cube為隨便套的GLSL shader。說不定哪一天連Maya裡都可以用GLSL了 XD&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SpacT2mFh5I/AAAAAAAAAvY/6elBXKnuiS4/s1600-h/005.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5374655070199973778" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: hand; HEIGHT: 296px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SpacT2mFh5I/AAAAAAAAAvY/6elBXKnuiS4/s400/005.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;但個人還是比較傾向用一般的程式編輯器，從在C/C++裡使用OpenGL API到GLSL都自己來～是覺得什麼都自己寫會比較紮實比較有成就感:)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SpXidGzl4yI/AAAAAAAAAuw/xFy-8PcLHH0/s1600-h/glsl_0004.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5374450720007643938" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 249px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SpXidGzl4yI/AAAAAAAAAuw/xFy-8PcLHH0/s320/glsl_0004.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-6844849913053980409?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/6844849913053980409/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/08/1glsleditor.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6844849913053980409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6844849913053980409'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/08/1glsleditor.html' title='(1)一些GLSL的editor'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__Eme0nfpM4Y/SpXitnccM2I/AAAAAAAAAvI/nSdvTmwqv6c/s72-c/glsl_0001.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-5554453662854208022</id><published>2009-08-20T01:11:00.000-07:00</published><updated>2009-08-22T05:16:12.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RenderMan小小筆記(II)'/><title type='text'>(16)用volume簡單實作水面下的效果</title><content type='html'>&lt;p&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-7c47829127f339bb" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v1.nonxt2.googlevideo.com/videoplayback?id%3D7c47829127f339bb%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330270183%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5908EBD228BDBD62EBF9BE1620F54C27EC507CE1.1CC7D42133BDF1C9758CCABF9B7C084264554762%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D7c47829127f339bb%26offsetms%3D5000%26itag%3Dw160%26sigh%3DXdVayxL_eISNEbM-9pBJ1tIiH88&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v1.nonxt2.googlevideo.com/videoplayback?id%3D7c47829127f339bb%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330270183%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5908EBD228BDBD62EBF9BE1620F54C27EC507CE1.1CC7D42133BDF1C9758CCABF9B7C084264554762%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D7c47829127f339bb%26offsetms%3D5000%26itag%3Dw160%26sigh%3DXdVayxL_eISNEbM-9pBJ1tIiH88&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;先扯點題外話....&lt;br /&gt;看到那些八八水災的報導，對災民的處境雖不能感同身受，但也會有想要下去幫點忙的衝動。最近也在想....如果這些水量是降落在台北，想必也會是一場浩劫&lt;/p&gt;&lt;p&gt;◢▆▅▄▃天佑╰(〒皿〒)╯台灣▃▄▅▇◣&lt;br /&gt;&lt;/p&gt;&lt;p&gt;----------------------題外話分隔線----------------------&lt;/p&gt;&lt;p&gt;&lt;br /&gt;這次是試著實作水面下的效果。上一次做跟水底有關的效果，大概是5,6年前的事了，那時是用3ds max照著書上的範例來做，連RenderMan這個詞都沒聽過。這次要用RenderMan來做，一開始有點傷腦筋，不過把Finding Nemo開來看個幾次之後，也有了點fu，就測試出如上面影片的樣子的東西囉。這篇就是大致上介紹一下上面的影片是如何做出來的，也是我第一次用到RenderMan的volume來做東西。&lt;br /&gt;&lt;br /&gt;首先是建置一個這樣的場景：一顆sphere中包著兩片平行的plane，然後camera從這兩片平行的plane裡看過去。如下圖&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/So-NdnaouAI/AAAAAAAAAtY/36TMiC7V--4/s1600-h/scene.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5372668420412717058" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 240px" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/So-NdnaouAI/AAAAAAAAAtY/36TMiC7V--4/s320/scene.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這裡會用到3個ensemble，分別是水面的、水中的、水底的。這裡先介紹水中的(下圖左:Ensemble_volume)，和水面的(下圖右:Ensemble_ocean_surf)。要注意的地方是，在Ensemble的Atmosphere上，接上smoke這個volume shader。將Ensemble_volume和Ensemble_ocean_surf分別attach在場景中的sphere和上方的plane上。Ensemble_volume的Surface接一個constant當作底色；將這兩個Ensemble接上smoke這個node的功用是~smoke這個volume shader會對這兩個Ensemble發生作用。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/So-PW7pELHI/AAAAAAAAAtg/pDP7IKCqJeM/s1600-h/volume_0001.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5372670504606116978" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 162px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/So-PW7pELHI/AAAAAAAAAtg/pDP7IKCqJeM/s320/volume_0001.jpg" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/So-PpT9GRfI/AAAAAAAAAto/rEyheRCAVKc/s1600-h/ensemble.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5372670820370236914" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 162px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/So-PpT9GRfI/AAAAAAAAAto/rEyheRCAVKc/s320/ensemble.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;上面那個smoke 如下圖。這裡小小介紹幾個欄位：&lt;br /&gt;Color : 就是color ，沒辦法更白話了&lt;br /&gt;Density：volume的濃度&lt;br /&gt;Sampling Increment：volume的顆粒大小&lt;br /&gt;至於這裡Pattern接的SLBox，本來是想要給它一點動態的變化，但是發現好像不明顯 @@，所以也就不特別介紹了~後面會在介紹Color接的SLBox是做什麼用的。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/So-TyE4n6jI/AAAAAAAAAt4/RM5nmTCUmNs/s1600-h/smoke.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5372675368990272050" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 162px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/So-TyE4n6jI/AAAAAAAAAt4/RM5nmTCUmNs/s320/smoke.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;接著是水面波紋的介紹。可以看到Ensemble_ocean_surf上分別在Surface和Displacement上接了Delux和Simple。其中displacement是接一個SLBox，如下圖&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/So-bRyekPwI/AAAAAAAAAuY/BRQusws5UCI/s1600-h/disp_0001.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5372683610386349826" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 162px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/So-bRyekPwI/AAAAAAAAAuY/BRQusws5UCI/s320/disp_0001.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SL code內容如下：簡單來說，就是用一層波紋較大片(f)的再疊上一層波紋叫細密(f2)的pattern，然後餵進時間變數(v1)，來做出動態效果。&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;/******************************************************/&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;/* float */&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;float hump = 0, hump2 = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;float j, f = 12, f2=200, amplitude = 1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;point p= transform("object", P); &lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;for(j = 0; j ＜3 ; j+=1)&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;　hump += abs(noise(p * f+2*v1) - 0.75) * amplitude;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;　f *= 2;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;　amplitude *= 0.5;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;　}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;for(j = 0; j ＜3; j+=1)&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;　hump2 += abs(noise(p * f+2*v1) - 0.75) * amplitude;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;　f *= 2;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;　amplitude *= 0.5;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;　}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;result = 1.75*(hump)+0.4*hump2;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;/******************************************************/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;接下來先介紹一個result會隨景深(Z軸)越深而漸漸變小的SLBox(type為float)。這裡將其命名為Z_d&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/So-eD5UbbCI/AAAAAAAAAug/sqs1WTPWiOA/s1600-h/Z_d.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5372686670239591458" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 162px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/So-eD5UbbCI/AAAAAAAAAug/sqs1WTPWiOA/s320/Z_d.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;SL code 如下：zmax和zmin分別為最大值的景深和最小值(camera前)的景深，視場景大小而定&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;/******************************************************/&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;/* float */&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;point pp = transform("camera",P);&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;point py = transform("world",P);&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;float zr = (zcomp(pp)-zmin) / (zmax-zmin);&lt;/span&gt; &lt;span style="COLOR: rgb(102,102,102)"&gt;zr = clamp(zr,0,1);&lt;/span&gt; &lt;span style="COLOR: rgb(102,102,102)"&gt;&lt;br /&gt;result = zr*zr;&lt;span style="COLOR: rgb(255,0,0)"&gt;//乘兩次的用意是...加重落差&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;/******************************************************/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;然後來看看用在做水波全反射用的SL code。乘上v4的用意是，讓水面的眼色會隨著景深越深而越來越黑。除此之外，也將Ensemble_ocean_surf上的Delux的opacity接上前述的Z_d，好讓其透明度隨著景深降低。&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/So-gbpJXU8I/AAAAAAAAAuo/7QHSJF_GF-c/s1600-h/surface_0000.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5372689277238334402" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 162px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/So-gbpJXU8I/AAAAAAAAAuo/7QHSJF_GF-c/s320/surface_0000.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;/******************************************************/&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;normal n = normalize(N);&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;normal i = normalize(I);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;result = (v1+v5)*v3*v4;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt;//視角與法向量內積的值小於某個值後，即將其改成較亮的顏色，&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt;//來摹擬全反射。&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;if(abs(n.i)&lt;0.3)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(102,102,102)"&gt;　result = v4*(v2*v3);&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;/******************************************************/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;同理，在smoke的color上，接上的SLBox，其SL code就只是簡單的color*Z_d(顏色*景深)。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;至於水底........就找張還ok的貼圖，乘上Z_d，再加點顏色的動態擾動以及一點displacement即可~&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-5554453662854208022?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=7c47829127f339bb&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/5554453662854208022/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/08/16.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5554453662854208022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5554453662854208022'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/08/16.html' title='(16)用volume簡單實作水面下的效果'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__Eme0nfpM4Y/So-NdnaouAI/AAAAAAAAAtY/36TMiC7V--4/s72-c/scene.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-8400630311345944052</id><published>2009-08-15T22:27:00.000-07:00</published><updated>2009-08-16T04:15:01.238-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RenderMan小小筆記(II)'/><title type='text'>(15)實作一個結冰的動態</title><content type='html'>&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-7d74045defa7713c" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v24.nonxt3.googlevideo.com/videoplayback?id%3D7d74045defa7713c%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330270183%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D73E1750874206224E87C9125CBE38CE874E309D5.7B9B8D93EB014B654DDB7D36451B572DD630BDA%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D7d74045defa7713c%26offsetms%3D5000%26itag%3Dw160%26sigh%3D4w64q21BEPx2myqPvOKgR7dsIHo&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v24.nonxt3.googlevideo.com/videoplayback?id%3D7d74045defa7713c%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330270183%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D73E1750874206224E87C9125CBE38CE874E309D5.7B9B8D93EB014B654DDB7D36451B572DD630BDA%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D7d74045defa7713c%26offsetms%3D5000%26itag%3Dw160%26sigh%3D4w64q21BEPx2myqPvOKgR7dsIHo&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;最近在ptt上面發現一個很溫暖的地方→內湖版！&lt;br /&gt;不只家在內湖，從幼稚園到高中，我都是在內湖度過的，覺得這是個生活機能好，有美麗環境，居民又熱心的地方～&lt;br /&gt;&lt;br /&gt;所以就想在這篇的影片上，表示一下我對這可愛的地方的喜愛～&lt;br /&gt;&lt;br /&gt;內湖Good!!&lt;br /&gt;&lt;br /&gt;--------------------------------拉哩拉咂分隔線-----------------------------------&lt;br /&gt;&lt;br /&gt;在RenderMan上是可以讓一張texture動態的出現，以下就小小的實作一下囉！(其實基本上，使用RenderMan可以做出很多動態的效果)&lt;br /&gt;&lt;br /&gt;這裡要做出的效果是....一個金屬要結冰，但不是整顆同時結，而是從邊邊角角的部位開始漸層的往內擴散~&lt;br /&gt;&lt;br /&gt;◎先準備一張像雪的texture~&lt;br /&gt;下面那張是來自這個材質的好站：&lt;br /&gt;&lt;a href="http://www.davegh.com/blade/davegh.htm"&gt;http://www.davegh.com/blade/davegh.htm&lt;/a&gt;&lt;br /&gt;站長是一個國外專業的繪製材質藝術家(但好像很久沒更新了)&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SoeaLsNf-6I/AAAAAAAAAtA/wbv9dZLAyHI/s1600-h/nie039.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5370430606299626402" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SoeaLsNf-6I/AAAAAAAAAtA/wbv9dZLAyHI/s320/nie039.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎在ImageFile裡使用那張texture，並將其接到一個type為float的Spline上，調整一下curve，使其白色的部份變的較為突出。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SoeZTHG3sqI/AAAAAAAAAs4/OandNJVQ64w/s1600-h/003.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5370429634267034274" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 213px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SoeZTHG3sqI/AAAAAAAAAs4/OandNJVQ64w/s320/003.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎在Delux裡，接上一個type為color的SLBox(這裡是接在v4上)。在這裡的作用是....在這個SLBox裡寫的code所產生的效果(結冰)，可以動態的將Diffuse、Specular、Reflection...等，慢慢蓋掉。&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SoeZJonVZfI/AAAAAAAAAsw/BtYG9RDGgFE/s1600-h/004.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5370429471462876658" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 213px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SoeZJonVZfI/AAAAAAAAAsw/BtYG9RDGgFE/s320/004.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎這裡就是上述那個SLBox的內容:&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;v2&lt;/span&gt;: [expr $time/5]-&gt;此為一個tcl語法，即v2的值為所經過的時間的五倍慢&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;v3&lt;/span&gt;: 連接一個float noise node&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;v4&lt;/span&gt;: 連接上面那個Spline node&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SoeZB-4R_HI/AAAAAAAAAso/sClA8B3ho_Y/s1600-h/005.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5370429340000582770" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 213px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SoeZB-4R_HI/AAAAAAAAAso/sClA8B3ho_Y/s320/005.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎此為寫在SL code裡的code，小小的解說一下:&lt;br /&gt;/*********************************************************************************/&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;//宣告兩個type為color的變數，其中finalColor為最後呈現的顏色&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;color C = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;color finalColor=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;//pp來物件座標的點的值&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;point pp = transform("object", P);&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#000099;"&gt;&lt;span style="color:#ff0000;"&gt;/*hump為控制結冰的範圍的值，3.2和1.4為測試出來的值，3.2為pp到物件中心點的距離的上界。當v2(時間)為0時，也就是還沒開始&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;&lt;span style="color:#ff0000;"&gt;結冰。當時間過越久，也就是v2的值越大，hump的值就越小，3.2-hump的值就越大；也就是說...結冰的範圍就越大*/&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;br /&gt;&lt;/span&gt;float hump = 3.20-1.4*(noise(10*s,10*t))*v2;&lt;br /&gt;float rp;&lt;/span&gt;&lt;/p&gt;&lt;span style="color:#000099;"&gt;&lt;p&gt;&lt;span style="color:#ff0000;"&gt;/*當物件表面的點，到物件中心的距離(length(pp))，大於hump的話，就將其做結冰的效果，否則就不作用，維持原本物件表面的樣子*/&lt;br /&gt;&lt;/span&gt;if(length(pp)&gt;hump)&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;{   &lt;br /&gt;&lt;span style="color:#ff0000;"&gt;//用smootstep這個function做出漸層的效果&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;rp =  1.4*smoothstep(hump, 3.2, length(pp));   &lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;finalColor = v4*C*v3*rp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;else&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;{    &lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;finalColor = 0;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;span style="color:#000099;"&gt;&lt;p&gt;&lt;br /&gt;result = finalColor;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;/******************************************************************************/&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;上面的影片中，還有加displacement，也是從這個SLBox node接出去做出來的囉~&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-8400630311345944052?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=7d74045defa7713c&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/8400630311345944052/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/08/15.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8400630311345944052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8400630311345944052'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/08/15.html' title='(15)實作一個結冰的動態'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__Eme0nfpM4Y/SoeaLsNf-6I/AAAAAAAAAtA/wbv9dZLAyHI/s72-c/nie039.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-8060404526784947958</id><published>2009-07-10T04:29:00.000-07:00</published><updated>2009-07-21T10:13:35.853-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RenderMan小小筆記(II)'/><title type='text'>(14)在RMS中使用RIBArchive</title><content type='html'>最近突然有一種體悟....就是當有一個....我認為xxoo的人，說我很ooxx時，在有那種&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#663300;"&gt;"你明明也xxoo，憑什麼批評我的ooxx?!"&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#663300;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;的想法前，應該事先要對自己坦承:我就是一個ooxx的人~&lt;/span&gt;&lt;br /&gt;還是坦然點會過的比較舒服&lt;br /&gt;&lt;br /&gt;-------------嘰哩呱啦吱吱咂咂--------------&lt;br /&gt;&lt;br /&gt;這篇只是小小介紹如何在RMS中使用RibArchive的功能。跟RMS的Ensemble跟RAT不同，沒有RIBBox這種東西可以接，因為RMS將其整合進Maya裡(RMS就是為了跟Maya有更好的結合才誕生的)。而且不只RibArchive，很多RenderMan的功能都要透過在Maya裡，新增以及設定一些attribute來達成。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;首先...建置一個簡單的場景如下：(cube給它一個紅色的材質球)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlcoaZhfQMI/AAAAAAAAApk/_AWdvkn2_1o/s1600-h/001.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5356794715773550786" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 222px" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlcoaZhfQMI/AAAAAAAAApk/_AWdvkn2_1o/s320/001.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;然後在Attribute視窗，切換到pCubeShape1的tab，按Attributes-&gt;RenderMan-&gt;Manage Attributes，會跳出下面這個視窗&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Slcn7saxVoI/AAAAAAAAApc/H6NeVl4cILA/s1600-h/002.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5356794188269704834" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 210px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Slcn7saxVoI/AAAAAAAAApc/H6NeVl4cILA/s320/002.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在Optional Attributes裡選"Pre Shape MEL"，然後按下Add，即可發現在pCubeShape1最下面出現一個新的attribute：Pre Shape MEL。這個欄位就等同於RAT的RIBBox欄位。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Slcnmlkx7cI/AAAAAAAAApU/Xjc4HpXSzkk/s1600-h/002_1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5356793825655385538" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 305px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Slcnmlkx7cI/AAAAAAAAApU/Xjc4HpXSzkk/s320/002_1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;對旁邊那個locator也是相同的作法。然後在這個欄位輸入&lt;span style="COLOR: rgb(255,102,0)"&gt;RiReadArchive "/oox/ooxx/Archive_test.rib";&lt;/span&gt;&lt;br /&gt;也就是在&lt;span style="COLOR: rgb(255,102,0)"&gt;RiReadArchive&lt;span style="COLOR: rgb(0,0,0)"&gt;後面&lt;/span&gt;&lt;/span&gt;接RibArchive的路徑，render後可以看到類似下圖：紅色的teapot是由於有給他一顆材質球，所以它會去讀材質球上的資訊。另一個是只單純讀*.rib裡的geometry資訊。(註:在RMS1.0中，並不能對locator做這樣的動作，而在RMS2.0中，有將這個bug修掉)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlcnV9SST0I/AAAAAAAAApM/K7tpe4gCbpE/s1600-h/ar"&gt;&lt;img id="BLOGGER_PHOTO_ID_5356793539962490690" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 240px" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlcnV9SST0I/AAAAAAAAApM/K7tpe4gCbpE/s320/ar" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;可以在文字編輯器裡，先打好所要輸入的code，再複製貼上，不然那欄位那麼小，直接在裏面輸入會搞到眼睛脫窗@@&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Slcm_l7KS8I/AAAAAAAAApE/Rdvj0BXP4Hc/s1600-h/003.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5356793155734358978" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 29px" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Slcm_l7KS8I/AAAAAAAAApE/Rdvj0BXP4Hc/s320/003.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這裡有順手寫了一個小小的script，先選取object，然後在maya裡執行(環境要為linux)，可選取要被讀取的文字檔，並將此文字檔的內容輸入到Pre Shape MEL裡:&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;from pymel import *&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;import pymel as pm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;from commands import *&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;import maya.mel as mel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;def getFile():&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;　zenFile = getoutput('zenity --title="search file" --file-selection --filename=""')&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;　tmpPath = zenFile.split('failed')&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;　filePath = tmpPath[1].split('\n')&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;　fileCont = open(filePath[1], 'r')&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;　return fileCont.read()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;def addArch():&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;　objShap = pm.ls(sl=1, dag=True, g=True)&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;　testName = objShap[0]&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;　mel.eval(' rmanAddAttr '+objShap[0]+' rman__torattr___preShapeScript "" ')&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;　archCont = getFile()&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;　print archCont&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;　setAttr(objShap[0]+".rman__torattr___preShapeScript" , archCont)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;addArch()&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-8060404526784947958?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/8060404526784947958/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/07/14rmsribarchive.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8060404526784947958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8060404526784947958'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/07/14rmsribarchive.html' title='(14)在RMS中使用RIBArchive'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__Eme0nfpM4Y/SlcoaZhfQMI/AAAAAAAAApk/_AWdvkn2_1o/s72-c/001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-424840986463807964</id><published>2009-07-08T04:31:00.000-07:00</published><updated>2009-07-08T06:43:31.591-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RenderMan小小筆記(II)'/><title type='text'>(13)在RMS中使用Environment Light來做Point-Based Global Illumination</title><content type='html'>　&lt;br /&gt;"&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(102, 102, 0);"&gt;為什麼我們要花這麼多時間做準備，以便在未來能做我們想做的事，卻不肯現在就去實現我們的理想？&lt;/span&gt;&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;節錄自「生命咖啡館」&lt;br /&gt;&lt;br /&gt;－－－－－－－－－－－－－－－－－－－－－－－－－－－－&lt;br /&gt;&lt;br /&gt;這篇是介紹如何使用RMS的Environment Light中的Point-Based Global Illumination功能，來做approximate occlusion(不負責翻譯:"近似occlusion".....好瞎@@)&lt;br /&gt;&lt;br /&gt;首先....就是要先有場景，以及要用來render的camera囉！&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlSKi5dphDI/AAAAAAAAAo8/JOh6JkiaZcQ/s1600-h/030.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 217px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlSKi5dphDI/AAAAAAAAAo8/JOh6JkiaZcQ/s320/030.jpg" alt="" id="BLOGGER_PHOTO_ID_5356058188995724338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;然後再新增一個camera，用來bake *.ptc用的，所以要保證render用的camera所看到的範圍，這個新增的camera也都要看的到。這裡是將這個camera重新命名為reference。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlSKcvLyDHI/AAAAAAAAAo0/SAf0FkvlmTY/s1600-h/032.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 230px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlSKcvLyDHI/AAAAAAAAAo0/SAf0FkvlmTY/s320/032.jpg" alt="" id="BLOGGER_PHOTO_ID_5356058083157216370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;打開Render Setting，將Render using切換成RenderMan(也可以直接開啟RenderMan Global)。然後切換到Features這個tab，在其底下的Global Illumination→Environment Light欄位裡，按滑鼠右鍵，選Create RenderManEnvLightShape，可以看到如下視窗。把Shadowing這個欄位切換成是occlusion。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlSKOje2c0I/AAAAAAAAAos/JFvXVbwoS0E/s1600-h/016.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 211px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlSKOje2c0I/AAAAAAAAAos/JFvXVbwoS0E/s320/016.jpg" alt="" id="BLOGGER_PHOTO_ID_5356057839497802562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;接著在RenderManEnvLightShape的Bake(或是Bake Shadowing)這個欄位裡，按滑鼠右鍵，選Create RenderRadiosity，即可出現如下視窗。&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;(註：這裡會出現三個選項：Create RenderRadiosity、Create MakeApproxGlobalDiffuse、Create MakeGlobalDiffuse3d，簡述如下：&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;MakeApproxGlobalDiffuse&lt;/span&gt;：會bake出global illumination的*.ptc，並會從這個*.ptc再產生*.bkm(brick map檔，可以想成是經過空間分割的*.ptc)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;MakeGlobalDiffuse3d&lt;/span&gt;：會bake出有ray-traced的global illumination的*.ptc，並會從這個*.ptc再產生*.bkm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;RenderRadiosity&lt;/span&gt;：同MakeApproxGlobalDiffuse，但不會產生*.bkm)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;然後在rmanRenderRadiosityPass的camera欄位裡，按滑鼠右鍵，選擇要bake *.ptc的camera的名稱(這裡是referenceShape)；在Caching Behavior選Compute，即要計算出*.ptc。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlSKGtwJLmI/AAAAAAAAAok/DRGjVyPAmL8/s1600-h/017.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 204px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlSKGtwJLmI/AAAAAAAAAok/DRGjVyPAmL8/s320/017.jpg" alt="" id="BLOGGER_PHOTO_ID_5356057704815734370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;執行render後，可以看到先render出object的color的圖，且是從reference這個camera角度看出去的樣子，也就是說，先透過bake *.ptc用的camera，來bake出object的顏色的資訊到*.ptc裡。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlSKBLML-MI/AAAAAAAAAoc/jRUPT7fo3OU/s1600-h/_preview"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlSKBLML-MI/AAAAAAAAAoc/jRUPT7fo3OU/s320/_preview" alt="" id="BLOGGER_PHOTO_ID_5356057609638770882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;接著會看到真正render出來的approximate occlusion的結果，如下：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlSJ53O1S-I/AAAAAAAAAoU/AqCNHLRrYcE/s1600-h/RMS_Occ"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlSJ53O1S-I/AAAAAAAAAoU/AqCNHLRrYcE/s320/RMS_Occ" alt="" id="BLOGGER_PHOTO_ID_5356057484022074338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;而且在project的renderman-&gt;untitled-&gt;data-&gt;0001底下，看到有一個*.ptc檔。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SlSJxD8SRFI/AAAAAAAAAoM/iXeUAORfZGM/s1600-h/021.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 176px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SlSJxD8SRFI/AAAAAAAAAoM/iXeUAORfZGM/s320/021.jpg" alt="" id="BLOGGER_PHOTO_ID_5356057332815119442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;用ptviewer開啟這個*.ptc，再右鍵-&gt;Color-&gt;_radiosity，可以看到如下結果～將object的color資訊寫進去的*.ptc，且視角是reference看出去的視角。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlSJDYI_bwI/AAAAAAAAAn0/phAmnzYmC1k/s1600-h/031.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 206px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlSJDYI_bwI/AAAAAAAAAn0/phAmnzYmC1k/s320/031.jpg" alt="" id="BLOGGER_PHOTO_ID_5356056547963137794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;再在rmanRenderRadiosityPass裡，將Caching Behavior切成Reuse，即可重複使用剛剛生出來的*.ptc的color資訊。再次render，就會直接render出結果，而不會先render出用來bake物件的color pass。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlSI5kr9naI/AAAAAAAAAns/lcCfL81P120/s1600-h/023.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlSI5kr9naI/AAAAAAAAAns/lcCfL81P120/s320/023.jpg" alt="" id="BLOGGER_PHOTO_ID_5356056379532352930" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-424840986463807964?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/424840986463807964/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/07/rms2k7environment-light.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/424840986463807964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/424840986463807964'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/07/rms2k7environment-light.html' title='(13)在RMS中使用Environment Light來做Point-Based Global Illumination'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__Eme0nfpM4Y/SlSKi5dphDI/AAAAAAAAAo8/JOh6JkiaZcQ/s72-c/030.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-6967117567148798845</id><published>2009-07-06T04:32:00.000-07:00</published><updated>2009-07-08T01:50:36.779-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RenderMan小小筆記(II)'/><title type='text'>(12)利用python產生rib並使用*.ptc</title><content type='html'>&lt;span style="color: rgb(153, 102, 51);font-size:180%;" &gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SlH_r062bLI/AAAAAAAAAm4/A6cLvl-vCng/s1600-h/image.php.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 280px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SlH_r062bLI/AAAAAAAAAm4/A6cLvl-vCng/s320/image.php.jpeg" alt="" id="BLOGGER_PHOTO_ID_5355342560325168306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(153, 102, 51);font-size:180%;" &gt;～你為什麼在這裡？～&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;最近在想....該怎麼釐清"依賴"跟"無賴"的感覺。昨天看完了 "生命咖啡館(The &lt;span style="color: rgb(102, 102, 102); font-weight: bold;"&gt;WHY ARE YOU HERE&lt;/span&gt; CAFE')" 的前面三章，已經很久沒有放慢速度，一字一句的好好看本書了，特別是這種勵志類的書。"&lt;span style="color: rgb(153, 102, 51);"&gt;我為什麼會在這裡？&lt;/span&gt;"， 這問題我還沒有個較明確的頭緒～想的到的是"因為我喜歡computer graphic阿"、"因為我喜歡看動畫阿"、"因為我很幸運可以把興趣當職業阿"、"因為我有想要珍惜的人阿"、"因為我宅阿"...etc，但仍是如 書上所敘述，我有一份喜歡的職業，也有一些好朋友，生活還算如意～但是內心深處，總還是有種難以言喻的感覺。昨天看完前三章後，感受到這本書有種讓我想一 口氣看完的吸引力。但還是闔上了書本，覺得這種書就是要看一部份，然後從生活中累積一些感觸後，再看一部份....慢慢的看完，儘管我真的很想一口氣看完 它 XD.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;有幾句話真的有被觸動到～&lt;br /&gt;&lt;br /&gt;「&lt;span style="color: rgb(153, 102, 51);"&gt;有的時候，換個角度來看事情，確實會挺有幫助的&lt;/span&gt;」&lt;br /&gt;&lt;br /&gt;「&lt;span style="color: rgb(153, 102, 51);"&gt;如果誠實面對自己，我會承認這些年來，我一直在質疑自己的人生，是否還有比我目前所知更深刻的一面&lt;/span&gt;」&lt;br /&gt;&lt;br /&gt;「&lt;span style="color: rgb(153, 102, 51);"&gt;有時候你就是不知道自己早已準備好，可以盡情享受生命中的完美時刻&lt;/span&gt;」&lt;br /&gt;&lt;br /&gt;－－－－－－－－－－－－囉哩八嗦分隔線－－－－－－－－－－－－&lt;br /&gt;RMS2.0新加了PRman for python，顧名思義，就是它有提供module(prman)讓使用者可以在python使用PRman的API。整個手癢想小小測一下，所以就以上一篇網誌當範例來玩一下，然後整理上來囉。以下是玩出來的python code：&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;import prman&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ri=prman.Ri()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;def ptc_RIB(ri):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;　rendertarget = "ptc_RIB.rib"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;　ri.Begin("ptc_RIB.rib")  # set rendertarget to ri.RENDER to render pixels&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Display("helloworld.exr", "it", "rgba")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.DisplayChannel("color _ooxx")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Format(512,512,1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Projection(ri.PERSPECTIVE, {ri.FOV: 60}) # standard Ri tokens are available&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Rotate(180, 1,0, 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Rotate(0, 0,1, 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Translate(0, 0.1, -8)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.WorldBegin()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Attribute( "cull", {"hidden": 0})   # don't cull hidden surfaces&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Attribute( "cull", {"backfacing": 0})   # don't cull backfacing surfaces&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Attribute( "dice", {"rasterorient": 0})   # view-independent dicing !&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Attribute( "visibility", {"int diffuse": 1})   # make objects visible to rays&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Attribute( "visibility", {"int specular": 1})   # make objects visible to rays&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;#RenderMan Interface會在RIB中的Lights(ex:spot light), Objects(ex:sphere) 和 Archives 上綁&lt;br /&gt;#一個ID，但我們可以自己給他我們想要的ID名稱，來將RI給它的蓋掉。如下紅色部份的寫法 &lt;span style="color: rgb(51, 51, 255);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.LightSource("spherelight", {&lt;span style="color: rgb(255, 0, 0);"&gt;ri.HANDLEID:"sl1"&lt;/span&gt;, "point from": (-2.8, 2.0, 2.5),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                     　"float radius": 0.5, "float intensity": 2, "float samples": 64.0, "float falloff": 0.5})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　a="area_illum_tpt.ptc"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　b="_ooxx"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;#在給shader的引數設定數值時，跟C/C++不同的是，PRman for python是要寫成如下面的型&lt;br /&gt;#式(綠色部份) &lt;span style="color: rgb(51, 51, 255);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Surface(&lt;span style="color: rgb(51, 204, 0);"&gt;"bake_direct_irrad", {"string filename": a,"string displaychannels": b}&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.Geometry("teapot")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.WorldEnd()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    　ri.End()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ptc_RIB(ri)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;下面是上面那段code，經由 RenderMan client library產生出來的code(RenderMan client library是把含有RenderMan Interface的code，output成rib語法的東西):&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;##RenderMan RIB&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;version 3.04&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Display "helloworld.exr" "it" "rgba"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DisplayChannel "color _ooxx"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Format 512 512 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Projection "perspective" "uniform float fov" [60]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Rotate 180 1 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Rotate 0 0 1 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Translate 0 0.1 -8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;WorldBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Attribute "cull" "hidden" [0]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Attribute "cull" "backfacing" [0]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Attribute "dice" "rasterorient" [0]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Attribute "visibility" "int diffuse" [1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Attribute "visibility" "int specular" [1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;LightSource "spherelight" "sl1" "float falloff" [0.5] "point from" [-2.8 2 2.5] "float samples" [64] "float radius" [0.5] "float intensity" [2]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Surface "bake_direct_irrad" "string filename" ["area_illum_tpt.ptc"] "string displaychannels" ["_ooxx"]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Geometry "teapot"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;WorldEnd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;render出來的圖(左)以及*.ptc(右)分別如下：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlHxBWXyrXI/AAAAAAAAAmw/ezCGbdj8tvs/s1600-h/ptc_teapot"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlHxBWXyrXI/AAAAAAAAAmw/ezCGbdj8tvs/s320/ptc_teapot" alt="" id="BLOGGER_PHOTO_ID_5355326437407763826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlHw6Fub4DI/AAAAAAAAAmo/Wj0B4nl_5Lw/s1600-h/ptc_tpt.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlHw6Fub4DI/AAAAAAAAAmo/Wj0B4nl_5Lw/s320/ptc_tpt.jpg" alt="" id="BLOGGER_PHOTO_ID_5355326312680251442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(153, 102, 51);font-size:180%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-6967117567148798845?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/6967117567148798845/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/07/pythonribptc.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6967117567148798845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6967117567148798845'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/07/pythonribptc.html' title='(12)利用python產生rib並使用*.ptc'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__Eme0nfpM4Y/SlH_r062bLI/AAAAAAAAAm4/A6cLvl-vCng/s72-c/image.php.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-6297365378733268149</id><published>2009-07-05T01:04:00.000-07:00</published><updated>2009-07-06T22:31:26.348-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RenderMan小小筆記(II)'/><title type='text'>(11)淺談point cloud</title><content type='html'>先扯點提外話吧～XD&lt;br /&gt;&lt;br /&gt;最近朋友大推我一本書，書名是"生命咖啡館"，裡面問讀者三個神祕的問題：&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;１.你為什麼在這裡？&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);"&gt;２.你害怕死亡嗎？&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);"&gt;３.你實現自我了嗎？&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;我想....不少人一看到這三個問題，會跟我有一樣的想法---&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"就醬阿！科科"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;但也就是會想知道除了"就醬阿"之外，這本書能帶給讀者怎樣的省思～&lt;br /&gt;這本書我也才正要開始看～有心得再寫上來囉！&lt;br /&gt;&lt;br /&gt;－－－－－－－－－－－正題分隔線－－－－－－－－－－&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SlGVpfz_sJI/AAAAAAAAAmY/Rjh84Fe5CjI/s1600-h/ptc_pic2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SlGVpfz_sJI/AAAAAAAAAmY/Rjh84Fe5CjI/s320/ptc_pic2.jpg" alt="" id="BLOGGER_PHOTO_ID_5355225972066988178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-size:130%;" &gt;1 point = 1 micropolygon&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;什麼是point cloud(*.ptc)檔勒？顧名思義～裏面存的是point(可用ptviewer開來看看)，每個 point 可以有任意的資料，雖然 point 會讓人覺得是一個&lt;strong&gt;點&lt;/strong&gt;， 但其實在 *.ptc 裏頭，每一個 point 其實是由 (position, normal, area) 三個組成，亦即它是一個有面積的圓盤(disk)，所以一個最基本的 .ptc 檔，裏頭的每一個 point 至少會有這三個資料，其餘的就看使用的人怎麼去運用（ex, occlusion, irradiance, …）。&lt;br /&gt;(以上是節錄Drake對point cloud檔的介紹～)&lt;br /&gt;&lt;br /&gt;接下來開始介紹如何在RenderMan中使用這種檔案，用的範例也是RMS的document所提供的。&lt;br /&gt;在RenderMan中，要產生*.ptc是透過使用一個叫作&lt;span style="color: rgb(204, 51, 204);"&gt;bake3d()&lt;/span&gt;的function，在document中的敘述簡述如下：&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;bake3d(filename, displaychannels, P, N, "radius", r, "coordsystem", cs,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;           "interpolate", 0,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;           &lt;span style="color: rgb(51, 204, 0);"&gt;"direct", d, "onebounce", ob, "occlusion", occ, ...&lt;/span&gt; );&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;綠色標記的部份，是要另外寫入*.ptc的channel，也就是除了(position, normal, area)以外，要寫入*.ptc的資訊。而在RIB檔中，也要有一個跟其名稱對應的DisplayChannel。例如：在bake3d中，有一個&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;"_ooxx", ooxx&lt;/span&gt;&lt;/span&gt;，其中ooxx為一個type為color的變數，則在RIB中，也要這樣宣告&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;DisplayChannel "color _ooxx"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;才可在*.ptc中寫入一個名為 '_ooxx' 的channel，並將變數color ooxx所存的資訊寫入 '_ooxx'。&lt;br /&gt;&lt;br /&gt;至於interpolate這個flag的作用是....先想像有一個四方形的盒子放在桌面上，盒子會有一面跟桌面平貼接觸。當interpolate為0時，除了盒子跟桌子接觸的面的資訊會被寫入*.ptc裡，而桌子跟盒子接觸的面的資訊也會被寫入*.ptc裡；而其值為1時，只會將桌子跟盒子接觸的面的資訊寫入*.ptc裡。所以其值為1是比較省時省空間的。&lt;br /&gt;&lt;br /&gt;接下來，來play一下document中的例子吧！&lt;br /&gt;&lt;br /&gt;首先，先分別新增一個*.sl和*.rib，這裡檔名分別是ptc_gen.sl與ptc_RIB.rib。先做個小小的實驗～用文字編輯器打開ptc_gen.sl，輸入以下RSL code:&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;surface&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    bake_direct_irrad(string filename = "", displaychannels = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                      float interpolate = 1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        color irrad;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        normal Nn = normalize(N);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        /* Compute direct illumination (ambient and diffuse) */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        &lt;span style="color: rgb(255, 0, 0);"&gt;//irrad = ambient() + diffuse(Nn);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        irrad = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        /* Store in point cloud file */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        bake3d(filename, displaychannels, P, Nn, "interpolate", interpolate,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;               "&lt;span style="color: rgb(0, 102, 0);"&gt;_ooxx&lt;/span&gt;", irrad);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Ci = irrad * Cs * Os;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Oi = Os;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;注意一下紅色部份：先將 " irrad = ambient() + diffuse() ; " mark起來，另外將irrad的值設為1。&lt;br /&gt;&lt;br /&gt;然後打開 ptc_RIB.rib ，輸入：&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;FrameBegin 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      Format 400 300 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      ShadingInterpolation "smooth"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      PixelSamples 4 4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      Display "bake_arealight" "it" "rgba"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      Quantize "rgba" 255 0 255 0.5&lt;/span&gt;&lt;br /&gt;　　　&lt;span style="color: rgb(255, 0, 0);"&gt;#宣告對應bake3d中的 '_ooxx' channel&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      &lt;span style="color: rgb(0, 102, 0);"&gt;DisplayChannel "color _ooxx"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      Projection "perspective" "fov" 25&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      Translate 0 -0.5 8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      Rotate -40  1 0 0 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      Rotate 20  0 1 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      Attribute "trace" "bias" 0.0001&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      WorldBegin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        Attribute "cull" "hidden" 0   # don't cull hidden surfaces&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        Attribute "cull" "backfacing" 0   # don't cull backfacing surfaces&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        Attribute "dice" "rasterorient" 0   # view-independent dicing !&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        Attribute "visibility" "int diffuse" 1   # make objects visible to rays&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        Attribute "visibility" "int specular" 1   # make objects visible to rays&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        LightSource "spherelight" 1 "from" [-2.8 2 0.5] "radius" 0.2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          "intensity" 2 "samples" 64 "falloff" 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        Sides 1   # to avoid flipping normals in "spherelight"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        # Ground plane&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        AttributeBegin&lt;br /&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;#產生名稱為area_illum_plane.ptc的point cloud檔&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          &lt;span style="color: rgb(0, 153, 0);"&gt;Surface "bake_direct_irrad" "filename" "area_illum_plane.ptc"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;　　　　　　&lt;span style="color: rgb(255, 0, 0);"&gt;#將shader中，變數irrad的資訊寫入此*.ptc中&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            "displaychannels" "_ooxx"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          Scale 3 3 3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          Polygon "P" [ -1 0 1  1 0 1  1 0 -1  -1 0 -1 ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        AttributeEnd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        Attribute "visibility" "int transmission" 1 # the cyl. casts shadow&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        Attribute "shade" "transmissionhitmode" "primitive" &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        # Cylinder with cap&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        AttributeBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          &lt;span style="color: rgb(0, 153, 0);"&gt;Surface "bake_direct_irrad" "filename" "area_illum_cyl.ptc"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;            "displaychannels" "_ooxx"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          Translate -1 0 0.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          Rotate -90 1 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          Cylinder 0.5 0 1 360&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          Disk 1 0.5 360&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        AttributeEnd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;      WorldEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;    FrameEnd&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;分別用&lt;span style="color: rgb(153, 51, 153);"&gt;shader&lt;/span&gt;和&lt;span style="color: rgb(153, 51, 153);"&gt;prman&lt;/span&gt;去編譯ptc_gen.sl和ptc_RIB.rib後，除了可以看到render出來的obj是一片白，還可以在目錄下發現多了兩個ptc檔:&lt;br /&gt;&lt;pre&gt;area_illum_plane.ptc&lt;br /&gt;area_illum_cyl.ptc&lt;br /&gt;&lt;/pre&gt;  用Pixar RenderMan提供的ptviewer開啟area_illum_cyl.ptc，可以看到如下圖～每個point都是全白的cylinder(因為irrad=1)，也就是說～有把irrad是白色的資訊寫入此ptc中:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SlBr8AZKULI/AAAAAAAAAlI/ABf0yu_3244/s1600-h/008.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 266px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SlBr8AZKULI/AAAAAAAAAlI/ABf0yu_3244/s320/008.jpg" alt="" id="BLOGGER_PHOTO_ID_5354898635585376434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;按右鍵-&gt;color可以看到 '_ooxx' 這個channel。選擇Point Radii，可以看到其point的分佈狀況：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SlBr3YdgW4I/AAAAAAAAAlA/-7HiaIjRd-g/s1600-h/007.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 252px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SlBr3YdgW4I/AAAAAAAAAlA/-7HiaIjRd-g/s320/007.jpg" alt="" id="BLOGGER_PHOTO_ID_5354898556146703234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;將ptc_gen.sl中的 irrad改回 ' irrad = ambient() + diffuse() ;'  再render則可得到下圖：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SlBreQWkTwI/AAAAAAAAAkw/botpnVeMRpM/s1600-h/009.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 266px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SlBreQWkTwI/AAAAAAAAAkw/botpnVeMRpM/s320/009.jpg" alt="" id="BLOGGER_PHOTO_ID_5354898124473388802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;其area_illum_cyl.ptc如下圖。用滑鼠左鍵反轉一下，可以看到此cylinder底部是空的，是因為interpolate為1的緣故。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlBrZYrOI8I/AAAAAAAAAko/QLdXU9jmDVM/s1600-h/010.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 266px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlBrZYrOI8I/AAAAAAAAAko/QLdXU9jmDVM/s320/010.jpg" alt="" id="BLOGGER_PHOTO_ID_5354898040808154050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;而area_illum_plane.ptc如下圖。右鍵-&gt;color-&gt;white，可以看到中間沒有空洞，整片白的plane。由上一個和此*.ptc可以看到，shadow的資訊被寫入*.ptc裡。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlBrTbFG5kI/AAAAAAAAAkg/p-FTwwPEDDc/s1600-h/011.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 266px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SlBrTbFG5kI/AAAAAAAAAkg/p-FTwwPEDDc/s320/011.jpg" alt="" id="BLOGGER_PHOTO_ID_5354897938374387266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;將ptc_gen.sl內容改成：&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;surface&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    bake_illumsurfcolor(string filename = "", displaychannels = "", texturename = "";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                        float interpolate = 1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        color irrad, tex = 1, illumsurfcolor;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        normal Nn = normalize(N);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        /* Compute direct illumination (ambient and diffuse) */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        &lt;span style="color: rgb(255, 0, 0);"&gt;irrad = ambient() + diffuse(Nn);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        /* Multiply by surface color */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        if (texturename != "")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            tex = texture(texturename);        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        &lt;span style="color: rgb(255, 0, 0);"&gt;illumsurfcolor = irrad * tex * Cs;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        /* Store in point cloud file */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        bake3d(filename, displaychannels, P, Nn, "interpolate", interpolate,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;               "_illumsurfcolor", &lt;span style="color: rgb(255, 0, 0);"&gt;illumsurfcolor&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Ci = illumsurfcolor * Os;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Oi = Os;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;再將ptc_RIB.rib內容改成：&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;FrameBegin 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Format 400 300 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      ShadingInterpolation "smooth"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      PixelSamples 4 4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Display "bake_illumsurf" "it" "rgba"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Quantize "rgba" 255 0 255 0.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      DisplayChannel "color _illumsurfcolor"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Projection "perspective" "fov" 25&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Translate 0 -0.5 8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Rotate -40  1 0 0 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Rotate 20  0 1 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Attribute "trace" "bias" 0.0001&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      WorldBegin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Attribute "cull" "hidden" 0   # don't cull hidden surfaces&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Attribute "cull" "backfacing" 0   # don't cull backfacing surfaces&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Attribute "dice" "rasterorient" 0   # view-independent dicing !&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Attribute "visibility" "int diffuse" 1   # make objects visible to rays&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Attribute "visibility" "int specular" 1   # make objects visible to rays&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        LightSource "spherelight" 1 "from" [-2.8 2 0.5] "radius" 0.2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          "intensity" 2 "samples" 64 "falloff" 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Sides 1   # to avoid flipping normals in "spherelight"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        # Ground plane&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        AttributeBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Surface "bake_illumsurfcolor" "filename" "illumsurf_plane.ptc"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            "displaychannels" "_illumsurfcolor" "texturename" "&lt;span style="color: rgb(255, 0, 0);"&gt;ooxx.tex&lt;/span&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Scale 3 3 3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Polygon "P" [ -1 0 1  1 0 1  1 0 -1  -1 0 -1 ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          "s" [1 1 0 0]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          "t" [0 1 1 0]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        AttributeEnd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Attribute "visibility" "int transmission" 1 # the cyl. casts shadow&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Attribute "shade" "transmissionhitmode" "primitive"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        # Cylinder with cap&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        AttributeBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Surface "bake_illumsurfcolor" "filename" "illumsurf_cyl.ptc"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            "displaychannels" "_illumsurfcolor" "texturename" "&lt;span style="color: rgb(255, 0, 0);"&gt;ooxx.tex&lt;/span&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Translate -1 0 0.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Rotate -90 1 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Cylinder 0.5 1 0 -360   # reversed to get texture right side up&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Disk 1 0.5 360&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        AttributeEnd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      WorldEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    FrameEnd&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;其中 'ooxx.tex' 是利用txmake 這個command（txmake ooxx.tif ooxx.tex），將一個ooxx.tif轉成ooxx.tex，也就是RenderMan的材質格式。&lt;br /&gt;&lt;br /&gt;render後可得到下圖：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SlBrMi67PyI/AAAAAAAAAkY/SSnwpDV3JV0/s1600-h/014.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 266px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SlBrMi67PyI/AAAAAAAAAkY/SSnwpDV3JV0/s320/014.jpg" alt="" id="BLOGGER_PHOTO_ID_5354897820220079906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;產生的*.ptc，分別為下面兩張圖(右鍵-&gt;Focus View可將視角focus在object上)。可以看到texture資訊也被寫入point裡。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlBrE18RhkI/AAAAAAAAAkQ/MWkN3z98VEA/s1600-h/012.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 223px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SlBrE18RhkI/AAAAAAAAAkQ/MWkN3z98VEA/s320/012.jpg" alt="" id="BLOGGER_PHOTO_ID_5354897687887054402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SlBrAEGxh1I/AAAAAAAAAkI/ApKGzESvIdo/s1600-h/013.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 266px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SlBrAEGxh1I/AAAAAAAAAkI/ApKGzESvIdo/s320/013.jpg" alt="" id="BLOGGER_PHOTO_ID_5354897605789845330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;最後介紹如何讀取已經bake好的ptc。&lt;br /&gt;可以將已經bake好的ptc，當作是一種3-d的texture，可以用&lt;span style="color: rgb(255, 0, 0);"&gt; texture3d() &lt;/span&gt;來讀取。由上一個例子，將ptc_gen改成：&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;surface&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    read_illumsurfcolor(uniform string filename = "")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        color illumsurfcolor = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        normal Nn = normalize(N);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        float ok;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;　　　　　&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;　　　　　&lt;span style="color: rgb(255, 0, 0);"&gt;//利用texture3d()，將 _illumsurfcolor 的資訊寫入illumsurfcolor &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        ok = &lt;span style="color: rgb(255, 0, 0);"&gt;texture3d(filename, P, Nn, "_illumsurfcolor", illumsurfcolor);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Ci = illumsurfcolor * Os;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Oi = Os;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    }&lt;/span&gt;&lt;/pre&gt; 再將ptc_RIB.rib改成：(注意～這rib跟之前不同，沒有light shader，也不用指定*.tex，因為已經通通被寫入*.ptc裡，直接讀取*.ptc裡的資訊即可)&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;FrameBegin 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Format 400 300 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      ShadingInterpolation "smooth"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      PixelSamples 4 4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Display "read_illumsurf" "it" "rgba"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Quantize "rgba" 255 0 255 0.5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Projection "perspective" "fov" 25&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Translate 0 -0.5 8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Rotate -40  1 0 0 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      Rotate 20  0 1 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      WorldBegin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        # Ground plane&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        AttributeBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Surface "read_illumsurfcolor" "filename" "illumsurf_plane.ptc"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Scale 3 3 3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Polygon "P" [ -1 0 1  1 0 1  1 0 -1  -1 0 -1 ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        AttributeEnd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        # Cylinder with cap&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        AttributeBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Surface "read_illumsurfcolor" "filename" "illumsurf_cyl.ptc"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Translate -1 0 0.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Rotate -90 1 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Cylinder 0.5 0 1 360&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;          Disk 1 0.5 360&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        AttributeEnd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      WorldEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    FrameEnd&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;render後即可得到如前一例子的結果。&lt;br /&gt;&lt;br /&gt;話說....這網誌已經閒置一個多月了，一來是不知道該寫些什麼，因為之前都在用RAT，而Pixar現在是推RMS；二來是前陣子事情也頗多的說～想想....還是寫些比較技術性的東西會覺得比較有趣～XD&lt;br /&gt;&lt;br /&gt;朝下一個10篇邁進吧！(遠目~~~)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-6297365378733268149?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/6297365378733268149/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/07/11point-cloud.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6297365378733268149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6297365378733268149'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/07/11point-cloud.html' title='(11)淺談point cloud'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__Eme0nfpM4Y/SlGVpfz_sJI/AAAAAAAAAmY/Rjh84Fe5CjI/s72-c/ptc_pic2.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-6971066444435399307</id><published>2009-05-09T00:32:00.000-07:00</published><updated>2010-10-28T18:33:39.635-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My RenderMan Tutorial'/><title type='text'>(10)利用SLBox出AOV(Arbitrary Output Variables)</title><content type='html'>一直很喜歡一首歌－－－華仔的"下次不敢"，也是電影童夢奇緣的主題曲&lt;br /&gt;每隔一段時間聽，都會有不同感受，在進入本篇主題前，先分享一下歌詞囉～&lt;br /&gt;&lt;br /&gt;&lt;h2 style="color: rgb(0, 0, 153);"&gt;劉德華--下次不敢&lt;/h2&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;歌手：劉德華 | 作曲：Peter Kam&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 填詞：劉德華 | 編曲：馮翰銘&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;繞了一圈　又過了一環&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 犯錯以後才後悔會不會太晚&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 就算認錯　就算你說下一次　我不敢&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; ＊失去容易　啊　回頭真難&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 　日子再壞也必需要走完&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 　啊　在生活中　每一個人&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 　應該有對自己最誠實的那份勇敢&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 　朋友啊　雖然哭泣常常讓人太難堪&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 　其實眼淚也有溫暖&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 　流過淚的你才能慢慢成長&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 　有傷心才會懂得有心歡＊&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; ＃啊　抓緊時間　把你感情的帳單&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 　好好去認認真真　一一的清還&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 　為身邊每個人　請不要再怠慢&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 　讓愛火一再點燃　從今我不想&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; 　再聽你說　下一次我不敢＃&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt; REPEAT＊＃＃&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;－－－－－－－－－－－－本篇開始　XD－－－－－－－－－－－－&lt;br /&gt;&lt;br /&gt;承接上一篇....這篇是透過介紹如何利用SLBox來出matte為例，來介紹如何出AOV。&lt;br /&gt;&lt;br /&gt;◎接續上一篇....另外再新增一個Ensemble，接一個Delux，然後在Delux裡新增一個Diffuse及SLBox，並將Duffuse的顏色調成黃色。preview可以看到如下圖～～～全白　XD。是因為SLBox的 result=(1,1,1); 將Diffuse蓋掉了。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUzArPGEII/AAAAAAAAAjY/ZY50-JpWVd8/s1600-h/009.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 231px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUzArPGEII/AAAAAAAAAjY/ZY50-JpWVd8/s320/009.jpg" alt="" id="BLOGGER_PHOTO_ID_5333725420389273730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將SLBox改成 result=0;即可看到黃色color的Diffuse效果。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SgUy8lMDw4I/AAAAAAAAAjQ/rLXEgr9RH1Y/s1600-h/010.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 230px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SgUy8lMDw4I/AAAAAAAAAjQ/rLXEgr9RH1Y/s320/010.jpg" alt="" id="BLOGGER_PHOTO_ID_5333725350046450562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎接著....來出matte吧。matte的pass在合成時可是非常非常非常重要的！！！&lt;br /&gt;在SLBox裡先新增一個type為color的變數，將其顏色調成紅色。&lt;br /&gt;接著在&lt;span style="color: rgb(51, 0, 153);"&gt;Primvars&lt;/span&gt;輸入&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;output varying color matte_test;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;接著在&lt;span style="color: rgb(51, 0, 153);"&gt;SL code&lt;/span&gt;欄位裡加入&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;extern color matte_test;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;matte_test=v1;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUy3uimXBI/AAAAAAAAAjI/tDRsWlctC2I/s1600-h/011.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 316px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUy3uimXBI/AAAAAAAAAjI/tDRsWlctC2I/s320/011.jpg" alt="" id="BLOGGER_PHOTO_ID_5333725266657565714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎在上一篇的SLBox裡，一樣新增一個type為color的變數(v6)，然後跟上一段一樣，&lt;br /&gt;在&lt;span style="color: rgb(51, 0, 153);"&gt;Primvars&lt;/span&gt;輸入&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;output varying color matte_test;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;在&lt;span style="color: rgb(51, 0, 153);"&gt;SL code&lt;/span&gt;欄位裡加入&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;extern color matte_test;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;matte_test=v6;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SgUyzUFpEZI/AAAAAAAAAjA/_R0e7LwNPQg/s1600-h/012.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 181px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SgUyzUFpEZI/AAAAAAAAAjA/_R0e7LwNPQg/s320/012.jpg" alt="" id="BLOGGER_PHOTO_ID_5333725190837309842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎在maya的scene裡，為了方便觀察，建置兩顆交疊的sphere。然後將slim裡的兩個ensemble分別assign給這兩個sphere。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUyvgYNoOI/AAAAAAAAAi4/Yg5yKlFR_Mw/s1600-h/013.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUyvgYNoOI/AAAAAAAAAi4/Yg5yKlFR_Mw/s320/013.jpg" alt="" id="BLOGGER_PHOTO_ID_5333725125416952034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎接著在RAT的RenderMan Globals裡-&gt;Display-&gt;Channel，按下New來新增一個pass，並在channel欄位裡打上color matte_test(跟SLBox宣告的pass變數名稱一樣)。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUyrF8jwhI/AAAAAAAAAiw/B0zQslEuS6Y/s1600-h/014.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 202px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUyrF8jwhI/AAAAAAAAAiw/B0zQslEuS6Y/s320/014.jpg" alt="" id="BLOGGER_PHOTO_ID_5333725049602163218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎然後在Secondary裡，按New，然後在Name欄位裡將名稱改成matteTest(所render出的pass檔按名稱)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SgUymA7Ss-I/AAAAAAAAAio/Gc0JV1ECI_0/s1600-h/015.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 207px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SgUymA7Ss-I/AAAAAAAAAio/Gc0JV1ECI_0/s320/015.jpg" alt="" id="BLOGGER_PHOTO_ID_5333724962355327970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎按下在下方的Channels旁的Add，在選單中選擇剛剛在Display-&gt;Channel輸入的color matte_test。(這裡也再加選float a的話，matte_test這個pass裡會有alpha channel)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SgUyheHoBjI/AAAAAAAAAig/tRgkEzE4T9k/s1600-h/016.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 165px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SgUyheHoBjI/AAAAAAAAAig/tRgkEzE4T9k/s320/016.jpg" alt="" id="BLOGGER_PHOTO_ID_5333724884292339250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎在Primary的Display Server，將it改成tiff，也就是將檔案render成*.tiff。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SgUyc1r3vyI/AAAAAAAAAiY/NC9RbXpDPKI/s1600-h/017.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 220px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SgUyc1r3vyI/AAAAAAAAAiY/NC9RbXpDPKI/s320/017.jpg" alt="" id="BLOGGER_PHOTO_ID_5333724804719034146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎按下render後，即可在project下的rmanpix裡看到render的圖以及拆出來的pass。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUyYpOBuKI/AAAAAAAAAiQ/6nzx_7D5mOo/s1600-h/018.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 317px; height: 133px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUyYpOBuKI/AAAAAAAAAiQ/6nzx_7D5mOo/s320/018.jpg" alt="" id="BLOGGER_PHOTO_ID_5333724732653156514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎用shake開啟(或其他合成軟體)，即可看到拆出的pass的物件顏色，為剛剛在SLBox裡assign給matte_test的顏色。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SgUyUlasXrI/AAAAAAAAAiI/RXaDvAwsQZU/s1600-h/019.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 153px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SgUyUlasXrI/AAAAAAAAAiI/RXaDvAwsQZU/s320/019.jpg" alt="" id="BLOGGER_PHOTO_ID_5333724662913064626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎如果是用RMS的話，只用在RenderMan Globals的Passes tab裡，output -&gt; Create Output -&gt; Custom，然後輸入color matte_test，即可出pass。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUyOVHb6aI/AAAAAAAAAiA/KSIIn1G1v4c/s1600-h/020.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 318px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUyOVHb6aI/AAAAAAAAAiA/KSIIn1G1v4c/s320/020.jpg" alt="" id="BLOGGER_PHOTO_ID_5333724555458111906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果想在*.sl裡，寫RSL來出aov的話，是用如下寫法：&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;surface ooxx(&lt;span style="color: rgb(51, 51, 255);"&gt;output varying color matte_test = 0;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;matte_test = color(1,0,0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;（呃....有程式基礎的，應該看的出這段想表答什麼吧）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;呼～不知不覺也累積到10篇了，但也自以為有系統的將RenderMan以及slim的network做了點初步的介紹。覺得達成一個整數後，就會失去動力....XD　疏漏之處....還希望有人指正囉～也謝謝賞識這些小小筆記的人！　^_____^&lt;br /&gt;接下來....會想寫點實際的應用吧～不過還沒想好也還沒去想要怎麼有系統的寫....(劣根性阿....orz)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-6971066444435399307?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/6971066444435399307/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/05/10slboxaov.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6971066444435399307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6971066444435399307'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/05/10slboxaov.html' title='(10)利用SLBox出AOV(Arbitrary Output Variables)'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUzArPGEII/AAAAAAAAAjY/ZY50-JpWVd8/s72-c/009.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-7085887889552597094</id><published>2009-05-08T22:43:00.000-07:00</published><updated>2010-10-28T18:34:27.300-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My RenderMan Tutorial'/><title type='text'>(9)簡單介紹SLBox</title><content type='html'>前一篇介紹了點RenderMan Shading Language，是在介紹這slim裡的SLBox鋪點路。SLBox是slim裡可以寫RSL code的地方，基本上跟寫RenderMan Shading Language是一樣的，只是SLBox是將最後RSL呈現的結果用一個叫作"result"的內建變數包起來，下面就來簡單介紹一下如何使用type為color的SLBox囉！&lt;br /&gt;&lt;br /&gt;◎照先前介紹的方式，先在slim裡新增一個Ensemble，再接一個Delux，並在Delux裡新增一個v1。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUZ33csW6I/AAAAAAAAAh4/rGJuY-7Febc/s1600-h/004.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 225px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUZ33csW6I/AAAAAAAAAh4/rGJuY-7Febc/s320/004.jpg" alt="" id="BLOGGER_PHOTO_ID_5333697781258017698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎從Colors -&gt; Utility -&gt; SLBox來新增一個type為color的SLBox。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUZvqqRapI/AAAAAAAAAhw/WM6SmBk4pHI/s1600-h/005.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 254px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUZvqqRapI/AAAAAAAAAhw/WM6SmBk4pHI/s320/005.jpg" alt="" id="BLOGGER_PHOTO_ID_5333697640386357906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎可以從底下的SL code欄位裡，看到預設的result為(1,1,1)，也就是全白。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SgUZpnKnu2I/AAAAAAAAAho/7G5A0GAhLbA/s1600-h/006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 181px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SgUZpnKnu2I/AAAAAAAAAho/7G5A0GAhLbA/s320/006.jpg" alt="" id="BLOGGER_PHOTO_ID_5333697536369081186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將其接到Delux的v1上，可以看到Delux的preview也是全白。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUZhT2_aFI/AAAAAAAAAhg/wultqqqQKPY/s1600-h/007.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 181px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUZhT2_aFI/AAAAAAAAAhg/wultqqqQKPY/s320/007.jpg" alt="" id="BLOGGER_PHOTO_ID_5333697393747519570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎在Parameter欄位，可以從下拉的選單中，看到有幾種type的變數。選擇所需要的type後，按下旁邊的&lt;span style="font-weight: bold;"&gt;+&lt;/span&gt;號，即可新增此種type的變數。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUZcM8XeHI/AAAAAAAAAhY/X0r4OoZHOBk/s1600-h/008.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 181px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUZcM8XeHI/AAAAAAAAAhY/X0r4OoZHOBk/s320/008.jpg" alt="" id="BLOGGER_PHOTO_ID_5333697305991673970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎先在Parameter選擇color，按下＋號；再選擇float，然後再按一次＋號，即可新增兩個type分別為color和float的變數(v1和v2)。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUZV365G0I/AAAAAAAAAhQ/qE8c6_SFbgE/s1600-h/009.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 181px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUZV365G0I/AAAAAAAAAhQ/qE8c6_SFbgE/s320/009.jpg" alt="" id="BLOGGER_PHOTO_ID_5333697197269130050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎新增一個Imagefile node，將其接到SLBox的v1上。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUZLBoHS-I/AAAAAAAAAhI/15xA26FYiAQ/s1600-h/010.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 226px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUZLBoHS-I/AAAAAAAAAhI/15xA26FYiAQ/s320/010.jpg" alt="" id="BLOGGER_PHOTO_ID_5333697010896161762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎在SLBox裡，將　result=(1,1,1);　改成　result=v1;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUZFp8JuqI/AAAAAAAAAhA/CjJiCUpTG8U/s1600-h/011.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 181px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUZFp8JuqI/AAAAAAAAAhA/CjJiCUpTG8U/s320/011.jpg" alt="" id="BLOGGER_PHOTO_ID_5333696918638410402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎preview即可看到Imagefile裡的貼圖。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUY_pkadCI/AAAAAAAAAg4/csaXvZOKQhI/s1600-h/011_1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 262px; height: 252px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUY_pkadCI/AAAAAAAAAg4/csaXvZOKQhI/s320/011_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5333696815459628066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎接著按下v2旁的方塊-&gt;float-&gt;Pattern-&gt;Noise。可以將v2連到一個type為float的Noise node。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUY52Rd16I/AAAAAAAAAgw/AkMYqca_COs/s1600-h/012.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 237px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SgUY52Rd16I/AAAAAAAAAgw/AkMYqca_COs/s320/012.jpg" alt="" id="BLOGGER_PHOTO_ID_5333696715790604194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將noise的frequence調成8，然後在SL code裡改成　result=v1*v2;　preview即可看到noise對剛才的貼圖產生了作用。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SgUY0IoN_hI/AAAAAAAAAgo/eYTylQPJk1k/s1600-h/013.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 181px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SgUY0IoN_hI/AAAAAAAAAgo/eYTylQPJk1k/s320/013.jpg" alt="" id="BLOGGER_PHOTO_ID_5333696617638657554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎如果希望這個shader會隨著燈光而有明暗變化以及反射的話，就先新增兩個type為color的變數。在變數名稱上點兩下，即可更改變數名稱。這裡是分別改成diff與spec。然後從shading component新增一個Diffuse和Specular，分別將其接到SLBox的diff以及spec上。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SgUYubYBbkI/AAAAAAAAAgg/DPkhXvVQL-U/s1600-h/014.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 181px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SgUYubYBbkI/AAAAAAAAAgg/DPkhXvVQL-U/s320/014.jpg" alt="" id="BLOGGER_PHOTO_ID_5333696519591784002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎把SL code改成　result=v1*v2*diff;　即可看到除了剛才的noise外，也有了和diffuse一樣的明暗變化。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SgUYpJI9ZuI/AAAAAAAAAgY/g0Yy31zZ1B0/s1600-h/015.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 181px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SgUYpJI9ZuI/AAAAAAAAAgY/g0Yy31zZ1B0/s320/015.jpg" alt="" id="BLOGGER_PHOTO_ID_5333696428797421282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎再把變數spec加上去，即可做出如specular的反射效果。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUYkR8iiII/AAAAAAAAAgQ/_w7eRqhwYPw/s1600-h/016.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 181px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUYkR8iiII/AAAAAAAAAgQ/_w7eRqhwYPw/s320/016.jpg" alt="" id="BLOGGER_PHOTO_ID_5333696345261901954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果不知道什麼時候要用乘的，什麼時候要用加的.....只能說先K點計算機圖學會比較有概念。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-7085887889552597094?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/7085887889552597094/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/05/9slbox.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/7085887889552597094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/7085887889552597094'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/05/9slbox.html' title='(9)簡單介紹SLBox'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__Eme0nfpM4Y/SgUZ33csW6I/AAAAAAAAAh4/rGJuY-7Febc/s72-c/004.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-8690372067042823769</id><published>2009-04-30T22:56:00.000-07:00</published><updated>2010-10-28T18:35:19.907-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My RenderMan Tutorial'/><title type='text'>(8)簡單介紹RenderMan Shading Language</title><content type='html'>也該寫點有關RenderMan Shading Language的東西了，不過這篇只是單純介紹如何操作*.sl。如同C++的檔案副檔名為cpp，RenderMan Shading Language的副檔名為sl。以artist的觀點，這篇可以說跟slim沒很大的關係，跳過這篇，一樣可以在slim上拉shader；以 programmer的觀點，會覺得關係可大了，畢竟slim裡的node，其核心都是SL code。所以如果要玩SL code的人，好歹也要修過Data Structure或是Numerical Analysis等較進階的程式課程。(深深覺得....除非是天資過人，萬中選一的高手，不然如果光是K完一本初階的C語言之類的，就出去跟人家說會寫程式，還蠻牽強的　XD)SL code語法跟C語言很像，也是結構式語言，一樣用//和/*....*/來做註解，只是宣告的資料型態不盡相同，例如SL有float、color、point、normal等，但是沒有int和double。&lt;br /&gt;&lt;br /&gt;這篇是對surface shader和displacement shader各舉一個例子來介紹。參考資料為：&lt;br /&gt;㊣http://www.fundza.com/&lt;br /&gt;㊣The RenderMan Companion (Steve Upstill)&lt;br /&gt;使用工具為prman&lt;br /&gt;&lt;br /&gt;◎可以先新增一個空的資料夾，把會用到的檔案集中到此處。這裡是在G槽下新增一個名為ooxx的folder。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfqXnPLxwtI/AAAAAAAAAgI/t5i9_VEhQyY/s1600-h/folder.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfqXnPLxwtI/AAAAAAAAAgI/t5i9_VEhQyY/s320/folder.jpg" alt="" id="BLOGGER_PHOTO_ID_5330739809293026002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎先小小介紹一下surface shader和displacement shader較常用到的內建變數(較詳細的介紹，還是要看這個比較好：http://www.fundza.com/rman_shaders/surface/sl_surface1.html　以及　http://www.fundza.com/rman_shaders/displacement/ds_displacement1.html)&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;###################################################################&lt;/span&gt;&lt;br /&gt;&lt;span class="green"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Ci&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;：&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;object表面顯現的顏色 (output)&lt;/span&gt;&lt;br /&gt;&lt;span class="green"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;       Oi&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;：&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;object表面顯現的透明度 (output)&lt;/span&gt;&lt;br /&gt;&lt;span class="green"&gt;      &lt;span class="red"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;      Cs&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;：&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;object原始的顏色 (input)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;      Os&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;：&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;object原始的透明度 (input)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;      N&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;：&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;object表面的法向量(三維向量)&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;s, t&lt;/span&gt;：object表面的貼圖座標(可以想成國中學的(x,y)直角座標)，其範圍皆為0到1，也就是說(0.5, 0.5)會落在座標的中間&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="green"&gt;&lt;span class="red"&gt;：&lt;/span&gt;&lt;/span&gt;object表面的point的值&lt;span class="green"&gt;&lt;span class="red"&gt;(三維向量)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;###################################################################&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;◎開啟一個空的記事本，key入以下內容：&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;surface　/*宣告surface shader function，所宣告的function名稱為noise_test1*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;noise_test1&lt;/span&gt;(float    Kfb = 1,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                        amp = 0.8,    &lt;span style="color: rgb(255, 0, 0);"&gt;/* amplitude of the noise &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                        freq = 9;  &lt;span style="color: rgb(255, 0, 0);"&gt; /* frequency of the noise */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                color   top = (1,0,0)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt; /* 方片上方的顏色 */&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                        lower = (1,1,0)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;/* 方片下方的顏色 */&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;// Noise values range from 0 to 1.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;float    ns =noise(s * freq, t * freq);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;// Offset the true value of 't'. The 'amp' parameter will allow&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;// the artist to strengthen or weaken the visual effect.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;float    tt = t + ns * amp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;/* 將上方的顏色和下方的顏色，沿著tt做混合(mix)，並將其assign給一個type為color的變數surfcolor */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;color    surfcolor = mix(top, lower, tt);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Oi = Os;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;/* object表現的顏色=透明度*object底色*混合後的顏色*Kfb  (此處的Kfb是控制object顯示出來的亮度)*/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Ci = Oi * Cs * surfcolor * Kfb;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;然後另存為SurfaceShaderTest.sl。開啟命令提示字元，在G:\ooxx底下輸入shader SurfaceShaderTest.sl (要記得設好prman的環境變數)，按下Enter後可以看到這樣的訊息：noise_test1: compiled，表示已經在ooxx這個資料夾底下產生了一個noise_test1.slo檔。用prman的shader來編譯*.sl所產生的檔案，其副檔名為slo，也就是在使用在rib中的shader名稱，同時也是選告surface shader時的function名稱。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfqXgGa4cAI/AAAAAAAAAgA/MHk4sljmuDk/s1600-h/surfaceCommand.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 55px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfqXgGa4cAI/AAAAAAAAAgA/MHk4sljmuDk/s320/surfaceCommand.jpg" alt="" id="BLOGGER_PHOTO_ID_5330739686681374722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎然後開啟一個空的記事本，貼上以下內容：&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Hider "hidden" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;LightSource "distantlight" 1 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Projection "perspective" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Translate 0 0 1.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Rotate 40 -1 1 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;FrameBegin 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Display "test2.jpg" "framebuffer" "rgba" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;WorldBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Rotate 10 0 0 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Surface "G:/ooxx/noise_test1" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Polygon  "P" [0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5 0.5 -0.5 0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Rotate 90 0 1 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Polygon  "P" [0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5 0.5 -0.5 0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Rotate 90 0 1 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Polygon  "P" [0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5 0.5 -0.5 0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Rotate 90 0 1 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Polygon  "P" [0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5 0.5 -0.5 0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Rotate 90 1 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Polygon  "P" [0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5 0.5 -0.5 0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Rotate 180 1 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Polygon  "P" [0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5 0.5 -0.5 0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;WorldEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;FrameEnd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;紅色註記的部份，即為剛剛產生的*.slo的完整路徑。將其另存為Simple_Cube.rib(這個*.rib只是產生一個cube而已)。如果將&lt;span style="color: rgb(255, 0, 0);"&gt;Surface "G:/ooxx/noise_test1" &lt;span style="color: rgb(0, 0, 0);"&gt;改成&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;Surface "G:/ooxx/noise_test1" &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"top"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;   [0.878 0.996 0.474]&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-family:monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"lower"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; [0.580 0.690 0.988]&lt;/span&gt;&lt;br /&gt;即可將top, lower原本的值，改成中括號內的數值，依此類推。slim的node上的參數也是由此而來。注意~只有宣告為引數的變數可以這樣使用~&lt;br /&gt;&lt;br /&gt;◎然後在命令提示字元裡，key入prman Simple_Cube.rib。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfqXXb524YI/AAAAAAAAAf4/1FrMwgrexGw/s1600-h/prmanCommand.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 55px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfqXXb524YI/AAAAAAAAAf4/1FrMwgrexGw/s320/prmanCommand.jpg" alt="" id="BLOGGER_PHOTO_ID_5330739537829618050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;即可看到下圖&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfqXKd-0XkI/AAAAAAAAAfw/ujKb5jIRLGU/s1600-h/surfaceShader.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfqXKd-0XkI/AAAAAAAAAfw/ujKb5jIRLGU/s320/surfaceShader.jpg" alt="" id="BLOGGER_PHOTO_ID_5330739315048996418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎再開啟一個空的記事本，key入：&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;displacement ripple1/*宣告一個名稱為ripple1的displacement shader*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;(float Km = 0.004, &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                           numripples = 8,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                           a = 0.3, &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                           b = 0.25)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;float  sdist = s - a,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       tdist = t - b,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//計算object表面每一點(s,t)到(a,b)的距離(dist)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       dist = sqrt(sdist * sdist + tdist * tdist),&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//將dist餵給sin，以在object表面做sin波。&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       hump = sin(dist  * 2 * PI * numripples);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//將N做normalize，然後assign給一個type為normal(三維向量)的變數n。&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;normal n = normalize(N);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//將object表面的點，延n做位移(displacement)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;P = P - n * hump * Km;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//P位移過後，再重新計算每個P的法向量，然後assign給N&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;N = calculatenormal(P);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;將其另存為DisplacementShaderTest.sl。一樣用shader這個command來compile這個*.sl，可以得到一個ripple1.slo。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfqW9nKRUzI/AAAAAAAAAfo/TNfmhut_jNM/s1600-h/disCommand.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 55px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfqW9nKRUzI/AAAAAAAAAfo/TNfmhut_jNM/s320/disCommand.jpg" alt="" id="BLOGGER_PHOTO_ID_5330739094174651186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將上面那個*.rib，用紅色註記的部份，換成&lt;span style="color: rgb(255, 0, 0);"&gt;Displacement "G:/ooxx/ripple1"&lt;span style="color: rgb(0, 0, 0);"&gt;，然後用prman去render即可看到如下結果&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfqW1DG6gKI/AAAAAAAAAfg/FfUPNbqz2lc/s1600-h/displaceShader.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfqW1DG6gKI/AAAAAAAAAfg/FfUPNbqz2lc/s320/displaceShader.jpg" alt="" id="BLOGGER_PHOTO_ID_5330738947057942690" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-8690372067042823769?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/8690372067042823769/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/8renderman-shading-language.html#comment-form' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8690372067042823769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/8690372067042823769'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/8renderman-shading-language.html' title='(8)簡單介紹RenderMan Shading Language'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__Eme0nfpM4Y/SfqXnPLxwtI/AAAAAAAAAgI/t5i9_VEhQyY/s72-c/folder.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-5943295255832950792</id><published>2009-04-27T18:02:00.000-07:00</published><updated>2010-10-28T18:36:00.400-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My RenderMan Tutorial'/><title type='text'>(7)spot light shader的簡單應用</title><content type='html'>最近有朋友跟我說我這RenderMan的心得整理的還不錯，聽到後還挺開心的說～XD，真是感謝大家的鼓勵！也有非程式背景的朋友說，希望我在這上面來點程式的教學，嗯....想了一想，一來是自己才疏學淺又懶...orz，二來是覺得非程式背景的人，與其對程式一知半解，想寫的時候不知道如何下手，那把每個node的特性搞清楚還來的較簡單又有意義～例如像上一篇的noise，有些人只會認為是一種亂數的擾動，卻不知道它其實不是亂數，而且是一種uniform continuous的函數(請參考這個很棒的網站-&gt; http://www.fundza.com/rman_shaders/noise/index.html)。也有人問說....那數學需不需要很強，坦白說，還真不知道該怎麼回答這問題，儘管我是唸應用數學出身的，只能說基本的舉陣計算，向量分析要懂一點　@@&lt;br /&gt;&lt;br /&gt;推薦一本個人覺得很棒的向量分析，中文的哦！&lt;br /&gt;&lt;br /&gt;http://www.tsanghai.com.tw/product_info.php?products_id=653&amp;amp;osCsid=35f70993779eee363847f195d32c8018&lt;br /&gt;&lt;br /&gt;個人覺得寫的簡單清晰，對基本的微分幾何也有詳細的介紹，又不像一堆專業知識的書籍，厚到可以拿來砸人～XD，而且預備知識只需要基本的微分和積分就好了。&lt;br /&gt;&lt;br /&gt;--------------------------以上是本篇的廢話，進入正題　XD---------------------------&lt;br /&gt;&lt;br /&gt;一般在lighting的時候，大部份都是用spot light比較多，一來是好控制，二來是相較point light而言，計算量少很多(記得一個point light的計算量是spot light的6倍)。不過也是要視實際遇到的情形來做考量。&lt;br /&gt;&lt;br /&gt;◎先建置一個簡單的場景，記得要打一個maya的spot light。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfZY4eymW6I/AAAAAAAAAfI/59sNv-VUNpc/s1600-h/0000.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfZY4eymW6I/AAAAAAAAAfI/59sNv-VUNpc/s320/0000.jpg" alt="" id="BLOGGER_PHOTO_ID_5329544936400772002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎在graph layout裡，Lights-&gt; Spot，來新增一個spot light的node。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfZY0EdeXBI/AAAAAAAAAfA/f52FVB4SzxE/s1600-h/0001.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 274px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfZY0EdeXBI/AAAAAAAAAfA/f52FVB4SzxE/s320/0001.jpg" alt="" id="BLOGGER_PHOTO_ID_5329544860613368850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎給sphere一個紅色的diffuse，然後render可以看到如下圖。有光線，但是沒有shadow。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfZYvAvxb6I/AAAAAAAAAe4/0EFOlpX4Syc/s1600-h/0002.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfZYvAvxb6I/AAAAAAAAAe4/0EFOlpX4Syc/s320/0002.jpg" alt="" id="BLOGGER_PHOTO_ID_5329544773717028770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎點下spot light裡的shadow旁的小方塊，如圖示，給它一個ShadowMap來產生陰影。一般lighting在做shadow的時候，只需要用到ShadowMap這個node就夠了。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfZYqm5Pe9I/AAAAAAAAAew/9zEyBMy7pbI/s1600-h/0003.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 244px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfZYqm5Pe9I/AAAAAAAAAew/9zEyBMy7pbI/s320/0003.jpg" alt="" id="BLOGGER_PHOTO_ID_5329544698057948114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎render之後，即可看到陰影。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfZYko4gFtI/AAAAAAAAAeo/8XIwT0fe8DQ/s1600-h/0004.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfZYko4gFtI/AAAAAAAAAeo/8XIwT0fe8DQ/s320/0004.jpg" alt="" id="BLOGGER_PHOTO_ID_5329544595512497874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將maya的spot light的屬性的Penumbra Angle調成10。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZYe-rJwhI/AAAAAAAAAeg/rkDyVqMzHZY/s1600-h/0005.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 174px; height: 230px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZYe-rJwhI/AAAAAAAAAeg/rkDyVqMzHZY/s320/0005.jpg" alt="" id="BLOGGER_PHOTO_ID_5329544498282873362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎可得如下結果。對照前一張render的結果，可以看到光線有擴散出去的感覺～像現在這個spot light的Cone Angle是40，Penumbra Angle是10的話，那它擴散的範圍就是spot light照到的範圍的10/40=1/4。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZYPoDyfEI/AAAAAAAAAeY/C36uFSaPEw8/s1600-h/0006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZYPoDyfEI/AAAAAAAAAeY/C36uFSaPEw8/s320/0006.jpg" alt="" id="BLOGGER_PHOTO_ID_5329544234514152514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎ShadowMap裡較常用到的attribute有：Map Resolution、Samples、Blur、Bias。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZYFyDBzmI/AAAAAAAAAeQ/9i9Xq4uMQk8/s1600-h/0007.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 156px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZYFyDBzmI/AAAAAAAAAeQ/9i9Xq4uMQk8/s320/0007.jpg" alt="" id="BLOGGER_PHOTO_ID_5329544065396624994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎這是Map Resolution為512時的圖&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZX_I2QFPI/AAAAAAAAAeI/9H_G0RVGNfY/s1600-h/0008.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZX_I2QFPI/AAAAAAAAAeI/9H_G0RVGNfY/s320/0008.jpg" alt="" id="BLOGGER_PHOTO_ID_5329543951257965810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎這是Map Resolution為1024時的圖，相較於上一張圖，shadow的alias有少很多，也就是resolution的值越大，alias越小。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfZX4o_hnhI/AAAAAAAAAeA/0kcXH9LrRQc/s1600-h/0009.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfZX4o_hnhI/AAAAAAAAAeA/0kcXH9LrRQc/s320/0009.jpg" alt="" id="BLOGGER_PHOTO_ID_5329543839627714066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將Blur調成0.02&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZXvjsaLrI/AAAAAAAAAd4/roMH5BMx40I/s1600-h/0010.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 207px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZXvjsaLrI/AAAAAAAAAd4/roMH5BMx40I/s320/0010.jpg" alt="" id="BLOGGER_PHOTO_ID_5329543683586535090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎可以看到如下圖，shadow有了blur的效果(這裡調成0.02這個值，其實有點太大)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZXj9-pLQI/AAAAAAAAAdw/Jzw50wYIA6w/s1600-h/0011.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZXj9-pLQI/AAAAAAAAAdw/Jzw50wYIA6w/s320/0011.jpg" alt="" id="BLOGGER_PHOTO_ID_5329543484483906818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將Samples的值調成64的話，可以看到如下圖的結果，相較於上圖，一粒一粒的感覺明顯改善。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZXVUzHqCI/AAAAAAAAAdo/CQy2sJ38MNg/s1600-h/0013.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZXVUzHqCI/AAAAAAAAAdo/CQy2sJ38MNg/s320/0013.jpg" alt="" id="BLOGGER_PHOTO_ID_5329543232911550498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將Bias調成0.002(在小場景，這個參數只要調一點點，就會有很大的影響)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZXLuDCRkI/AAAAAAAAAdg/yIiOd7gLe_s/s1600-h/0013_1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 255px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZXLuDCRkI/AAAAAAAAAdg/yIiOd7gLe_s/s320/0013_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5329543067890501186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎可以看到如下圖。有時候在一些場景裡做lighting時，會發生shadow跟物件沒接在一起的詭異情形，Bias就可以對shadow做一些位移個的效果，來將shadow和object接在一起。當然也可以用來做出一些特別的效果。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfZXEk8JrdI/AAAAAAAAAdY/ks6Yvh_5pJs/s1600-h/0014.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfZXEk8JrdI/AAAAAAAAAdY/ks6Yvh_5pJs/s320/0014.jpg" alt="" id="BLOGGER_PHOTO_ID_5329542945186622930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎上圖中可以看到polygon sphere看起來有點菱菱角角，除了用maya的smooth功能外，這裡順便介紹RAT的subdivision的使用(注意..這跟maya的smooth是用不一樣的演算法)：RenerMan-&gt;Pixar Subdivs-&gt; Mesh as Subdivs。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZW_ZBfslI/AAAAAAAAAdQ/bUd6rkbp14U/s1600-h/0016.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfZW_ZBfslI/AAAAAAAAAdQ/bUd6rkbp14U/s320/0016.jpg" alt="" id="BLOGGER_PHOTO_ID_5329542856088466002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎再render後即可看到一粒平滑的sphere。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfZW7bZeYLI/AAAAAAAAAdI/WaqkWOYCkAI/s1600-h/0017.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfZW7bZeYLI/AAAAAAAAAdI/WaqkWOYCkAI/s320/0017.jpg" alt="" id="BLOGGER_PHOTO_ID_5329542788006437042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ｐｓ：這裡要感謝一位好同事好朋友~Vence，很多lighting的細節與概念等，都是向他討教來的～　XD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-5943295255832950792?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/5943295255832950792/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/spot-light-shader.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5943295255832950792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5943295255832950792'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/spot-light-shader.html' title='(7)spot light shader的簡單應用'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__Eme0nfpM4Y/SfZY4eymW6I/AAAAAAAAAfI/59sNv-VUNpc/s72-c/0000.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-2372013351407197706</id><published>2009-04-24T19:29:00.000-07:00</published><updated>2010-10-28T18:36:41.727-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My RenderMan Tutorial'/><title type='text'>(6)一些 float pattern的介紹</title><content type='html'>話說前幾天去一個學長那邊play，算是第一次比較有玩到RenderMan Studio(RMS)，跟RendereMan Artist Tools(RAT)在本質上有很大的不同，光是globals的介面就搞得有點暈頭轉向...orz...還在慢慢研究中~XD。不過，在slim拉RenderMan Network的概念倒是沒差多少，等比較有心得再和RAT做個比較整理上來囉~&lt;br /&gt;&lt;br /&gt;這篇主要是介紹一點pattern的應用。其實pattern就是一種programming texture，也可以搭配其他手繪的texture做出一些有趣的效果~以下就簡單介紹一下float type的noise、facingforward、spline以及spline如何跟texture做搭配。&lt;br /&gt;&lt;br /&gt;◎在graph layout上，Floats-&gt;Patterns-&gt;noise，來新增一個float type的noise node。noise可以應用在簡單的處理一些不是那麼平滑的反射，像人臉的反射、桌面的反射...等，都帶了那麼點不平順，就可以用noise來處理~&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfJ3TWVnciI/AAAAAAAAAdA/WNTTQU8MSew/s1600-h/003.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 254px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfJ3TWVnciI/AAAAAAAAAdA/WNTTQU8MSew/s320/003.jpg" alt="" id="BLOGGER_PHOTO_ID_5328452483430183458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將frequency調到8，可得如下圖。frequency也就是它擾動頻率的程度，值越大，其detail越細。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfJ3PbTHTGI/AAAAAAAAAc4/_01lfZCPRX4/s1600-h/004.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 264px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfJ3PbTHTGI/AAAAAAAAAc4/_01lfZCPRX4/s320/004.jpg" alt="" id="BLOGGER_PHOTO_ID_5328452416042388578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將其接到第1篇小小筆記的Diffuse的intensity上，由於intensity就是亮度，這個動作就是在Diffuse的intensity上做noise，所以可以看到在Diffuse上產生了擾動的效果。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfJ3K0pCDqI/AAAAAAAAAcw/ozA68ZMzvhI/s1600-h/005.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 236px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfJ3K0pCDqI/AAAAAAAAAcw/ozA68ZMzvhI/s320/005.jpg" alt="" id="BLOGGER_PHOTO_ID_5328452336945860258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎這是FacingForward。顧名思義，就是計算物件法向量與視線的內積，值越大的部位越亮。可以應用在一些圓弧形的東西上，來做一些類似拋光的效果。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfJ3Gui_eiI/AAAAAAAAAco/9DW2L0S0o5E/s1600-h/006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 243px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfJ3Gui_eiI/AAAAAAAAAco/9DW2L0S0o5E/s320/006.jpg" alt="" id="BLOGGER_PHOTO_ID_5328452266590435874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將其接到Diffuse的intensity上，可得如下的效果。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfJ3BgEkrMI/AAAAAAAAAcg/48IJtKT7eAE/s1600-h/007.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 241px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfJ3BgEkrMI/AAAAAAAAAcg/48IJtKT7eAE/s320/007.jpg" alt="" id="BLOGGER_PHOTO_ID_5328452176805407938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將FacingForward的invert打開，也就是將其值倒反過來，可得下圖。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfJ28-c33qI/AAAAAAAAAcY/QPfksxGP5CE/s1600-h/008.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 234px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfJ28-c33qI/AAAAAAAAAcY/QPfksxGP5CE/s320/008.jpg" alt="" id="BLOGGER_PHOTO_ID_5328452099061046946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎Diffuse就變成這樣。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfJ21CT62CI/AAAAAAAAAcQ/Ac-NYAneXDg/s1600-h/009.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 247px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfJ21CT62CI/AAAAAAAAAcQ/Ac-NYAneXDg/s320/009.jpg" alt="" id="BLOGGER_PHOTO_ID_5328451962658281506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎這是Spline node的預設值。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfJ2sg49XWI/AAAAAAAAAcI/in8fLsNd6Kk/s1600-h/010.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 190px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfJ2sg49XWI/AAAAAAAAAcI/in8fLsNd6Kk/s320/010.jpg" alt="" id="BLOGGER_PHOTO_ID_5328451816247876962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將其Spline的curve隨便拉一下，可以看到類似下圖的效果。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfJ2jCjqajI/AAAAAAAAAcA/d4a3OrbT1w8/s1600-h/011.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 198px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfJ2jCjqajI/AAAAAAAAAcA/d4a3OrbT1w8/s320/011.jpg" alt="" id="BLOGGER_PHOTO_ID_5328451653486668338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎再將其接到Diffuse的intensity上，可以得到如下圖。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfJ2djZ_LyI/AAAAAAAAAb4/NzSDMfQ_GuM/s1600-h/012.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 226px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfJ2djZ_LyI/AAAAAAAAAb4/NzSDMfQ_GuM/s320/012.jpg" alt="" id="BLOGGER_PHOTO_ID_5328451559225241378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎最後，來小小玩一下Spline和texture的結合吧。先將Diffuse的intensity換成internal value。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfJ2WeBeorI/AAAAAAAAAbw/98g9uX2ybEQ/s1600-h/013.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 110px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfJ2WeBeorI/AAAAAAAAAbw/98g9uX2ybEQ/s320/013.jpg" alt="" id="BLOGGER_PHOTO_ID_5328451437521183410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎新增一個color 的ImageFile，沿用之前的青蛙圖，將ImageFile接到spline的Pattern上。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfJ2OTvUGnI/AAAAAAAAAbo/_YhQyzAkaC8/s1600-h/014.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 294px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfJ2OTvUGnI/AAAAAAAAAbo/_YhQyzAkaC8/s320/014.jpg" alt="" id="BLOGGER_PHOTO_ID_5328451297321687666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎預設可得下圖：一隻灰階的青蛙~&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfJ2Kbh_eRI/AAAAAAAAAbg/GMvFyTHDZPo/s1600-h/015.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 192px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfJ2Kbh_eRI/AAAAAAAAAbg/GMvFyTHDZPo/s320/015.jpg" alt="" id="BLOGGER_PHOTO_ID_5328451230693816594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎調整一下spline curve看看。可以看到類似下圖~有一些顏色被濾掉(壓掉)了。這也是spline好用的地方，可以用來濾掉等於某些值的顏色。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfJ2Gxtwx2I/AAAAAAAAAbY/uZjtRoLIjQk/s1600-h/016.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 195px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfJ2Gxtwx2I/AAAAAAAAAbY/uZjtRoLIjQk/s320/016.jpg" alt="" id="BLOGGER_PHOTO_ID_5328451167929288546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以上當然是處理一些比較簡單的情況，但一些比較複雜的情形，還是免不了要在SLBox裡寫點SL code囉，以後再介紹~ XD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-2372013351407197706?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/2372013351407197706/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/6-float-pattern.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/2372013351407197706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/2372013351407197706'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/6-float-pattern.html' title='(6)一些 float pattern的介紹'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__Eme0nfpM4Y/SfJ3TWVnciI/AAAAAAAAAdA/WNTTQU8MSew/s72-c/003.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-6705326471555657931</id><published>2009-04-23T23:08:00.000-07:00</published><updated>2009-04-23T23:43:54.435-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Houdini雜記'/><title type='text'>Light shader example</title><content type='html'>這是自己摸索Help裡面的一些教學，所做出來的東西，&lt;br /&gt;如果有什麼疏漏的地方，請多指教~&lt;br /&gt;&lt;br /&gt;Step1:&lt;br /&gt;  建置如下圖之場景&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFe-E9NGII/AAAAAAAAAbQ/-_dwvqbexfU/s1600-h/001.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 235px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFe-E9NGII/AAAAAAAAAbQ/-_dwvqbexfU/s320/001.jpg" alt="" id="BLOGGER_PHOTO_ID_5328144254731360386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;然後從Houdini的Help裡，找到如下圖的code&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFcI68RgZI/AAAAAAAAAbI/LO5aAAWd9Ws/s1600-h/002.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 258px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFcI68RgZI/AAAAAAAAAbI/LO5aAAWd9Ws/s320/002.jpg" alt="" id="BLOGGER_PHOTO_ID_5328141142486778258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step2:&lt;br /&gt;  利用上圖的上面的code，建立一個surface shader&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFb902xV0I/AAAAAAAAAbA/v80T_XqjZOI/s1600-h/003.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 234px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFb902xV0I/AAAAAAAAAbA/v80T_XqjZOI/s320/003.jpg" alt="" id="BLOGGER_PHOTO_ID_5328140951874524994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;並指定給其中一個sphere，算圖後可得如下圖之結果&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFbwpJnS6I/AAAAAAAAAa4/okyPk7lTFMU/s1600-h/004.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 313px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFbwpJnS6I/AAAAAAAAAa4/okyPk7lTFMU/s320/004.jpg" alt="" id="BLOGGER_PHOTO_ID_5328140725394033570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step3:&lt;br /&gt;  開啟New Operator Type，將Network Type設為 Light Shader Operator&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFaO4U2BcI/AAAAAAAAAaw/2CsHVLnFyDk/s1600-h/005.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 308px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFaO4U2BcI/AAAAAAAAAaw/2CsHVLnFyDk/s320/005.jpg" alt="" id="BLOGGER_PHOTO_ID_5328139045840487874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;然後輸入step1下面的code&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFaJVng43I/AAAAAAAAAao/DtSMyv7LmFo/s1600-h/006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 294px; height: 220px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFaJVng43I/AAAAAAAAAao/DtSMyv7LmFo/s320/006.jpg" alt="" id="BLOGGER_PHOTO_ID_5328138950624207730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step4:&lt;br /&gt;  在Network視窗，切換到shop，按下tab鍵→選擇剛剛建立的Light shader名稱&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFaB2kLfbI/AAAAAAAAAag/47oLyGHIKhU/s1600-h/007.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 299px; height: 309px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFaB2kLfbI/AAAAAAAAAag/47oLyGHIKhU/s320/007.jpg" alt="" id="BLOGGER_PHOTO_ID_5328138822029639090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;將此node拖曳到場景中的pointlight上，會跳出如下視窗，&lt;br /&gt;選擇第一個"Create spare paramter on pointlight1 for Light Shader SHOP"&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFZ4uQ2j4I/AAAAAAAAAaY/kqsrt-Mzw3w/s1600-h/008.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 219px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFZ4uQ2j4I/AAAAAAAAAaY/kqsrt-Mzw3w/s320/008.jpg" alt="" id="BLOGGER_PHOTO_ID_5328138665182269314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Step5:&lt;br /&gt;  按下New Operator Type的Apply鍵→算圖，即可得如下結果&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFZVSfnJtI/AAAAAAAAAaQ/Bx2gs6xOTEM/s1600-h/009.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 239px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFZVSfnJtI/AAAAAAAAAaQ/Bx2gs6xOTEM/s320/009.jpg" alt="" id="BLOGGER_PHOTO_ID_5328138056432559826" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-6705326471555657931?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/6705326471555657931/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/light-shader-example.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6705326471555657931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6705326471555657931'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/light-shader-example.html' title='Light shader example'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFe-E9NGII/AAAAAAAAAbQ/-_dwvqbexfU/s72-c/001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-435186624863752451</id><published>2009-04-23T22:03:00.000-07:00</published><updated>2009-04-23T23:47:08.451-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Houdini雜記'/><title type='text'>displacement shader example</title><content type='html'>這是用下列連結中的其中一個範例&lt;br /&gt;stud.fh-wedel.de/~wk/Handouts/houdini_zip/vex.pdf&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step1:&lt;br /&gt; 一樣，設置一個簡單的場景&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFR7FpdMKI/AAAAAAAAAaI/_wTFeIo2t0w/s1600-h/0001.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 211px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFR7FpdMKI/AAAAAAAAAaI/_wTFeIo2t0w/s320/0001.jpg" alt="" id="BLOGGER_PHOTO_ID_5328129909726195874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step2:&lt;br /&gt; 指定一個材質給sphere&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFRzxU6dHI/AAAAAAAAAaA/_Ezo1H1P6fw/s1600-h/0002.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 185px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFRzxU6dHI/AAAAAAAAAaA/_Ezo1H1P6fw/s320/0002.jpg" alt="" id="BLOGGER_PHOTO_ID_5328129784012239986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;然後開啟New Operator Type，在Network Type選擇displacement shader operator&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfFRrl-FliI/AAAAAAAAAZ4/w-d4f5OhXYo/s1600-h/0003.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 306px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfFRrl-FliI/AAAAAAAAAZ4/w-d4f5OhXYo/s320/0003.jpg" alt="" id="BLOGGER_PHOTO_ID_5328129643524757026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;輸入如圖的Code，按下Test Compile&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFRjHRRpaI/AAAAAAAAAZw/9YsnGDsOV2w/s1600-h/0004.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 278px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFRjHRRpaI/AAAAAAAAAZw/9YsnGDsOV2w/s320/0004.jpg" alt="" id="BLOGGER_PHOTO_ID_5328129497844786594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step3:&lt;br /&gt; 在Network視窗，切換到shop模式，進入basic surface，然後在suboutput1 node2的 input上，連接剛剛在New Operator Type上輸入的名稱&lt;br /&gt; 如圖&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFPKJ32OzI/AAAAAAAAAZo/iKXqrLYntiI/s1600-h/0005.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 252px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFPKJ32OzI/AAAAAAAAAZo/iKXqrLYntiI/s320/0005.jpg" alt="" id="BLOGGER_PHOTO_ID_5328126870023453490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step4:&lt;br /&gt; 算圖，即可得出如下圖之結果&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFK6wSZtEI/AAAAAAAAAZg/2bseK_vCIA8/s1600-h/0006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 312px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFK6wSZtEI/AAAAAAAAAZg/2bseK_vCIA8/s320/0006.jpg" alt="" id="BLOGGER_PHOTO_ID_5328122207410959426" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-435186624863752451?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/435186624863752451/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/displacement-shader-example.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/435186624863752451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/435186624863752451'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/displacement-shader-example.html' title='displacement shader example'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFR7FpdMKI/AAAAAAAAAaI/_wTFeIo2t0w/s72-c/0001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-6261321457876418258</id><published>2009-04-23T20:41:00.000-07:00</published><updated>2009-04-23T21:43:18.776-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Houdini雜記'/><title type='text'>Hiroshige Fishscales Shader Tutorial</title><content type='html'>現在介紹surface shader&lt;br /&gt;一樣是用網路上的另一個範例，目的在做出像魚麟的效果，連結如下&lt;br /&gt;http://tutorials.vizyacky.com/vizy_tutorials_student/ChipCollier_fishscales_tutorial/ChipCollier_fishscales_tutorial.php&lt;br /&gt;&lt;br /&gt;Step1:&lt;br /&gt;先設置一個簡單的場景&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFBnGT2afI/AAAAAAAAAZY/rPJcH4JO8O0/s1600-h/001.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 272px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFBnGT2afI/AAAAAAAAAZY/rPJcH4JO8O0/s320/001.jpg" alt="" id="BLOGGER_PHOTO_ID_5328111974120581618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step2:&lt;br /&gt; 一樣，File -&gt; New Operator Type ...，&lt;br /&gt; 除了Network Type設為Surface Shader Operator，其餘設定都仿照上一個教學，如圖，按下 Accept&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFBiJsRoFI/AAAAAAAAAZQ/brANDSrDwNI/s1600-h/002.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 250px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfFBiJsRoFI/AAAAAAAAAZQ/brANDSrDwNI/s320/002.jpg" alt="" id="BLOGGER_PHOTO_ID_5328111889128988754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step3:&lt;br /&gt; 在Network Editor，選擇Material Palette，拉一個Basic Surface材質進去，如圖，再將此材質指定給場景中的Sphere&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFBcro2gTI/AAAAAAAAAZI/zF1IAcPS6wI/s1600-h/003.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 319px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFBcro2gTI/AAAAAAAAAZI/zF1IAcPS6wI/s320/003.jpg" alt="" id="BLOGGER_PHOTO_ID_5328111795162218802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step4:&lt;br /&gt;來小試牛刀一下。在Editor Operator Type Properties 視窗裡，Key入&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;surface&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; noise_surf(vector clr = {1,0,0}; float frequency = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; export vector nml = {0,0,0})&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   Cf = clr * (float(noise(frequency * P)) + 0.5) * diffuse(normalize(N));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   nml = normalize(N)*0.5 + 0.5;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; }&lt;/span&gt;&lt;br /&gt;一樣，按下Test Compile&lt;br /&gt;&lt;br /&gt;Step5:&lt;br /&gt;在Network Editor選擇shop標籤&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFBWdpFSYI/AAAAAAAAAZA/GQTJ9jbMdQA/s1600-h/004.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 309px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFBWdpFSYI/AAAAAAAAAZA/GQTJ9jbMdQA/s320/004.jpg" alt="" id="BLOGGER_PHOTO_ID_5328111688325876098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;然後進入basic_surface node&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFBQvsQvQI/AAAAAAAAAY4/0VbSd0YXYas/s1600-h/005.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 316px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFBQvsQvQI/AAAAAAAAAY4/0VbSd0YXYas/s320/005.jpg" alt="" id="BLOGGER_PHOTO_ID_5328111590091832578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step6:&lt;br /&gt;然後在suboutput1 node的 input上，shift+滑鼠右鍵→選擇剛剛輸入的Operator Label名稱，如圖。一樣，按下Edit Operator Type Properties的Apply&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfFBK9pM6sI/AAAAAAAAAYw/uyslgzEQBCo/s1600-h/006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 276px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfFBK9pM6sI/AAAAAAAAAYw/uyslgzEQBCo/s320/006.jpg" alt="" id="BLOGGER_PHOTO_ID_5328111490757880514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step7:&lt;br /&gt;算張圖來看看吧。Render→Create Render Node→mentra，&lt;br /&gt;然後Render→Start Render→mentra1，可得下圖&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFBFOU8iII/AAAAAAAAAYo/fiK5Nac4LrY/s1600-h/007.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 263px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfFBFOU8iII/AAAAAAAAAYo/fiK5Nac4LrY/s320/007.jpg" alt="" id="BLOGGER_PHOTO_ID_5328111392157108354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step8:&lt;br /&gt;來試試教學範例上的code吧。將noise_surf內的code改成&lt;br /&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;int rep_s=10;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  int rep_t=15;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  float tt = (t * rep_t) % 1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  vector colorA = {0,0,0};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  vector colorB = {0.5,0.7,0.8};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  vector colorC = {0.9,1,0.9};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  float radS = radians(s * (rep_s * 180));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  float tSin = sin(radS);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  float tCos = cos(radS);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  float apt = abs((tt&lt;=0.5)?tCos:tSin) * 0.5;    float bpt = abs((tt&lt;=0.5)?tSin:tCos) * 0.5;    float cpt = apt - 0.05;     float _tt=0;    if(tt &lt; _tt =" tt;" _tt =" (tt-0.5);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       Cf = colorB;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  } else {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   if( _tt &gt; apt) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       if(_tt&lt;/span&gt;&lt;bpt)&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            Cf = colorA;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       } else {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;           Cf = colorB;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   } else {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       Cf = colorC;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  }&lt;/span&gt;&lt;br /&gt;(註：要將範例檔中的_s改成s，_t改成t，surfcolor改成Cf)&lt;br /&gt;然後一樣，Test Compile→Apply&lt;br /&gt;再算圖即可得出以下結果:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFBBp3IIMI/AAAAAAAAAYg/vlsDW20RTDQ/s1600-h/008.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 314px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFBBp3IIMI/AAAAAAAAAYg/vlsDW20RTDQ/s320/008.jpg" alt="" id="BLOGGER_PHOTO_ID_5328111330828755138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;教學檔上的理論部份就不贅述了，至於上面提到的s,t,Cf等，為內建的變數，有興趣的話，&lt;br /&gt;可以去查查相關資料。&lt;br /&gt;&lt;/bpt)&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-6261321457876418258?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/6261321457876418258/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/hiroshige-fishscales-shader-tutorial.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6261321457876418258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6261321457876418258'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/hiroshige-fishscales-shader-tutorial.html' title='Hiroshige Fishscales Shader Tutorial'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__Eme0nfpM4Y/SfFBnGT2afI/AAAAAAAAAZY/rPJcH4JO8O0/s72-c/001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-5774618655632687102</id><published>2009-04-23T19:37:00.000-07:00</published><updated>2009-04-23T23:46:03.762-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Houdini雜記'/><title type='text'>A Generic Ripple - Creating a custom VEX Operator (by Georg Duemlein)</title><content type='html'>（這前４篇只是將以前寫在另一個blog的Houdini心得整理過來）&lt;br /&gt;&lt;br /&gt;這是網路上抓到的一個教學範例&lt;br /&gt;連結：http://www.preset.de/2007/0824/generic_ripple/rdg-genericRipple.pdf&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step1: File -&gt; New Operator Type ...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfEmkTg-STI/AAAAAAAAAYY/zn0RX6lhh4w/s1600-h/0001.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 178px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SfEmkTg-STI/AAAAAAAAAYY/zn0RX6lhh4w/s320/0001.jpg" alt="" id="BLOGGER_PHOTO_ID_5328082239311726898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step2:&lt;br /&gt; 在Operator Name 輸入 rdg_ripple&lt;br /&gt;   Operator Label 輸入 RDG Ripple&lt;br /&gt; (這裡可以自由輸入名稱，為尊重作者，所以用教學檔上的名稱)&lt;br /&gt;&lt;br /&gt; Network Type 選擇 Geometry Operator&lt;br /&gt; Install Library to 選擇 Current HIP File Only&lt;br /&gt; Save To Library 則指定自己想儲存的路徑&lt;br /&gt;  按下 Accept&lt;br /&gt;&lt;br /&gt;Step3:&lt;br /&gt; 然後會出現以下視窗&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfEmfnuctDI/AAAAAAAAAYQ/ljW3YvEWDzU/s1600-h/0002.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 241px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SfEmfnuctDI/AAAAAAAAAYQ/ljW3YvEWDzU/s320/0002.jpg" alt="" id="BLOGGER_PHOTO_ID_5328082158837609522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;選擇Vex Code標籤&lt;br /&gt;  Key入&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 153);"&gt;sop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  rdg_ripple( float freqency = 50;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  float speed = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  float amplitude = 0.1;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;      vector offset = {0, 0, 0};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;      float offset_y = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;      float dist = length(P);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;      offset_y = sin(dist * freqency + speed) * amplitude;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;      setcomp(offset, offset_y, 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;      P += offset;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; 按下Test Compile，若是沒有bug，則會出現以下視窗(先不要將此視窗關掉)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfEmal6jaYI/AAAAAAAAAYI/PGYSEFjJczM/s1600-h/0003.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 245px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfEmal6jaYI/AAAAAAAAAYI/PGYSEFjJczM/s320/0003.jpg" alt="" id="BLOGGER_PHOTO_ID_5328082072452163970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step4:&lt;br /&gt;在Network Editor按下 Tab鍵→Geometry，按下i進入Geometry node，&lt;br /&gt;刪除file1 node，接著再按Tab→Grid，然後將Rows 及 Columns調到50，如圖&lt;br /&gt;(將那兩個數值調高的原因在於可以展現較平順的效果)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfEmVjqjvwI/AAAAAAAAAYA/OOk7zOW3dso/s1600-h/0004.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 238px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SfEmVjqjvwI/AAAAAAAAAYA/OOk7zOW3dso/s320/0004.jpg" alt="" id="BLOGGER_PHOTO_ID_5328081985948860162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step5:&lt;br /&gt;在grid1的output上，shift+滑鼠右鍵→RDG Ripple，會出現如下圖:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfEmQ_5lF7I/AAAAAAAAAX4/5J1oD43rMQQ/s1600-h/0005.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 219px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfEmQ_5lF7I/AAAAAAAAAX4/5J1oD43rMQQ/s320/0005.jpg" alt="" id="BLOGGER_PHOTO_ID_5328081907628709810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;然後按下Operator Type Properties視窗的 Apply&lt;br /&gt;即出現如下圖之結果:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfEmNpLCtNI/AAAAAAAAAXw/_6MUyofBGgI/s1600-h/0006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 227px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SfEmNpLCtNI/AAAAAAAAAXw/_6MUyofBGgI/s320/0006.jpg" alt="" id="BLOGGER_PHOTO_ID_5328081849988330706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;挺有意思的吧&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這裡只單純的大概介紹如何使用sop shader，教學檔裡的理論部份也只是簡單的三角函數，就不贅述囉！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-5774618655632687102?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/5774618655632687102/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/generic-ripple-creating-custom-vex.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5774618655632687102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5774618655632687102'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/generic-ripple-creating-custom-vex.html' title='A Generic Ripple - Creating a custom VEX Operator (by Georg Duemlein)'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__Eme0nfpM4Y/SfEmkTg-STI/AAAAAAAAAYY/zn0RX6lhh4w/s72-c/0001.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-752793267334253965</id><published>2009-04-14T19:52:00.000-07:00</published><updated>2009-11-24T01:12:55.063-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mel與pymel'/><title type='text'>簡單介紹pymel以及安裝</title><content type='html'>什麼是pymel咧？有在寫mel的應該都知道Maya在8.5版之後，有跟python做結合。但是....結合的不是很好，有很多python的優勢沒有發揮出來，像是對資料的動態處理。所以呢，就有幾位工程師，開始著手改良python與maya的結合~~~pymel就誕生了。話說某天用maya原本的python在寫一個工具，為了要動態的存取stringarray這個type的attribute，try了很久，但是卻一直跳error出來，而我現在的主管就在這時向我介紹了這好物，整個輕鬆解決了那時的問題。先介紹一下一下怎麼安裝，再敘述當時遇到的狀況囉~&lt;br /&gt;&lt;br /&gt;可以先去這個連結:&lt;br /&gt;http://www.highend3d.com/maya/downloads/tools/syntax_scripting/Pymel-4844.html&lt;br /&gt;下載pymel的壓縮檔，解壓縮後，會得到一個名稱為pymel的資料夾。如果是Windows的使用者，直接將此資料夾複製到My Document\maya\prefs\script裡，即可使用。&lt;br /&gt;&lt;br /&gt;來敘述一下當時遇到的問題吧，先看以下code：&lt;br /&gt;###########################################################&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;import maya.cmds as mcmds&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;#宣告一個array, 值為a, b, c&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;TestStringArray=['a','b','c']  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;#新增一個transform的node，並將其命名為testnode&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;mcmds.createNode( 'transform', n='testnode' )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;#給testnode新增一個資料型態為stringArray的屬性，其名稱為test_stringArray&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;mcmds.addAttr('testnode', longName='test_stringArray', dt='stringArray')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;#將TestStringArray的值，assign給&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;testnode.test_stringArray&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;mcmds.setAttr('testnode.test_stringArray', 3, TestStringArray, type='stringArray')&lt;/span&gt;&lt;br /&gt;###########################################################&lt;br /&gt;執行的話，會在最後一行發生error，因為它不能先宣告一個array (test_stringArray=['a','b','c'])，然後再把這個array的值set給testnode.test_stringArray。所以得將最後一行改成&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;mcmds.setAttr('testnode.test_stringArray', 3, 'a', 'b', 'c', type='stringArray')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;如果現在要在這個&lt;span style="color: rgb(204, 0, 0);"&gt;testnode.test_stringArray&lt;span style="color: rgb(0, 0, 0);"&gt;放100筆資料呢.....總不能這樣寫&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;mcmds.setAttr('testnode.test_stringArray', 100, &lt;span style="color: rgb(0, 153, 0);"&gt;'a1', 'a2', 'a3',...bla bla...,'a100'&lt;/span&gt;, type='stringArray')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;很恐怖吶！！&lt;br /&gt;&lt;br /&gt;但是換成用pymel的話，就可以直接用已經宣告好的array來用，如下：&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;#先import  pymel的module&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;from pymel import *&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;#將TestStringArray  assign給&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;testnode.test_stringArray&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;setAttr('testnode.test_stringArray', TestStringArray)&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;酷吧~　而pymel在寫UI時，也有其便利性在，以後有機會在寫上來囉~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-752793267334253965?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/752793267334253965/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/pymel.html#comment-form' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/752793267334253965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/752793267334253965'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/pymel.html' title='簡單介紹pymel以及安裝'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-6631066928457370262</id><published>2009-04-14T01:37:00.000-07:00</published><updated>2010-10-28T18:37:29.711-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My RenderMan Tutorial'/><title type='text'>(5)RenderMan Globals基本介紹</title><content type='html'>前面幾篇，除了比較偏programming的部份，也大概介紹了surface, displacement怎麼使用，也是該介紹像是解析度、gamma值、ray tracing....等怎麼設定。這一切~都在RenderMan Globals裡可以設定，簡單來說，RenderMan Globals裏面的設定，決定了render出來的結果。這裡僅介紹小轉個人比較常用的部份囉~&lt;br /&gt;&lt;br /&gt;◎RenderMan -&gt; RenderMan Globals 可以看到如下視窗。Display-&gt;Primary：&lt;br /&gt;Display Name: render出來的檔案名稱。&lt;br /&gt;Camera Name:用來render的camera的shape名稱。(注意~要是shape的名稱喔)&lt;br /&gt;Display Resolution:解析度。&lt;br /&gt;Display Server:用來選擇要render出來的檔案格式，如果是it的話，就是會直接顯示於catelog視窗。&lt;br /&gt;Exposure:設定gamma值用的。&lt;br /&gt;&lt;br /&gt;至於Secondary以及Channel是在出pass、layer時會用到，以後再介紹。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeRU3fU9d_I/AAAAAAAAAXE/w66qQ7qszSw/s1600-h/001.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 204px; height: 320px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeRU3fU9d_I/AAAAAAAAAXE/w66qQ7qszSw/s320/001.jpg" alt="" id="BLOGGER_PHOTO_ID_5324473971737720818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎Camera：&lt;br /&gt;Motion Blur:就是Motion Blur，沒辦法更白話了。&lt;br /&gt;Shutter Angle:Motion Blur的程度。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SeRUyotzjtI/AAAAAAAAAW8/qDxZkCK8lLU/s1600-h/002.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 201px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SeRUyotzjtI/AAAAAAAAAW8/qDxZkCK8lLU/s320/002.jpg" alt="" id="BLOGGER_PHOTO_ID_5324473888358502098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎Reyes：&lt;br /&gt;Shading Rate:可以想成render出來的精細度，值越小，計算的範圍越小，也就越精細。&lt;br /&gt;Pixel Samples:也是決定render出來的精細度，值越大，每次計算的pixel sample越多，也就越精細。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SeRUsivmkaI/AAAAAAAAAW0/OAb0Dn8il-c/s1600-h/003.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 201px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SeRUsivmkaI/AAAAAAAAAW0/OAb0Dn8il-c/s320/003.jpg" alt="" id="BLOGGER_PHOTO_ID_5324473783676211618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎Rays：&lt;br /&gt;Ensemble Ray Tracing:打開的就，就會計算ray tracing。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SeRUniLuCmI/AAAAAAAAAWs/ATIF8_6ayKo/s1600-h/004.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 201px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SeRUniLuCmI/AAAAAAAAAWs/ATIF8_6ayKo/s320/004.jpg" alt="" id="BLOGGER_PHOTO_ID_5324473697626360418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎Accel：&lt;br /&gt;Selected Object Only &amp;amp; With Selected Lights:照字面上看，就是只render選取到的object和light。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SeRUiTpkHEI/AAAAAAAAAWk/DcBBMjNJnek/s1600-h/005.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 201px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SeRUiTpkHEI/AAAAAAAAAWk/DcBBMjNJnek/s320/005.jpg" alt="" id="BLOGGER_PHOTO_ID_5324473607825660994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎Spool-&gt;Frames：&lt;br /&gt;就是render出連續圖檔的相關設定，字面上還挺容易懂的，就懶的打了～&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SeRUeV7uJZI/AAAAAAAAAWc/O6Jze1wyfkE/s1600-h/006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 201px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SeRUeV7uJZI/AAAAAAAAAWc/O6Jze1wyfkE/s320/006.jpg" alt="" id="BLOGGER_PHOTO_ID_5324473539719210386" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-6631066928457370262?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/6631066928457370262/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/5renderman-globals.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6631066928457370262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/6631066928457370262'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/5renderman-globals.html' title='(5)RenderMan Globals基本介紹'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__Eme0nfpM4Y/SeRU3fU9d_I/AAAAAAAAAXE/w66qQ7qszSw/s72-c/001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-7139869737709469622</id><published>2009-04-13T02:19:00.000-07:00</published><updated>2010-10-28T18:37:59.122-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My RenderMan Tutorial'/><title type='text'>(4)displacement及貼圖的基本運用</title><content type='html'>上一篇拉哩拉咂的打了一堆偏programming的東西，也是該來介紹一下如何使用displacement和貼圖了。&lt;br /&gt;&lt;br /&gt;什麼是displacement呢，簡單來想，就是會變形的bump。&lt;br /&gt;&lt;br /&gt;先開始介紹怎麼使用貼圖吧～&lt;br /&gt;&lt;br /&gt;◎這裡也是接續第1篇小小筆記的檔案。在graph layout上按滑鼠右鍵-&gt; Colors-&gt; Maps-&gt; ImageFile 來新增一個ImageFile，顧名思義，這就是一個貼圖用的node。其實這裡也可以選Floats-&gt; Maps-&gt; ImageFile，會產生一個灰階的ImageFile，因為displacement用灰階的就可以了。為什麼這裡要用彩色(color)的呢，等一下會說明。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SeMHTxs7f-I/AAAAAAAAAWU/cmLmR8Pato0/s1600-h/003.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324107220822753250" style="float: left; margin: 0pt 10px 10px 0pt; width: 320px; cursor: pointer; height: 226px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SeMHTxs7f-I/AAAAAAAAAWU/cmLmR8Pato0/s320/003.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎在ImageFile的File選項，按下資料夾的圖示，選擇所要使用的貼圖檔案路徑(通常只能為 *.tif)。然後按下另一個圖示，選"Convert Textures"，將剛剛指定的*.tif轉成Pixar RenderMan的貼圖檔案格式(*.tex)。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeMHP5DoxrI/AAAAAAAAAWM/r9sk0cKTQRc/s1600-h/004.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324107154077566642" style="float: left; margin: 0pt 10px 10px 0pt; width: 320px; cursor: pointer; height: 123px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeMHP5DoxrI/AAAAAAAAAWM/r9sk0cKTQRc/s320/004.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將此ImageFile接到Simple的Displacement，當作要產生displacement的紋路。這裡來解釋一下為什麼要選用color的ImageFile，因為如果把這node接到diffuse的color的話，就可以把這當作彩色的底色囉。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SeMHKMhQ2XI/AAAAAAAAAWE/nIDfXav1GLg/s1600-h/005.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324107056222886258" style="float: left; margin: 0pt 10px 10px 0pt; width: 320px; cursor: pointer; height: 264px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SeMHKMhQ2XI/AAAAAAAAAWE/nIDfXav1GLg/s320/005.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎這裡是用一張青蛙的圖(kero~kero)。按下"Toggle preview render setting"，然後將"Object Shape"選為Plane，就可以將preview的模式改成plane。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SeMHDsWvX6I/AAAAAAAAAV8/q6DpM-Eb-3w/s1600-h/006.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324106944509599650" style="float: left; margin: 0pt 10px 10px 0pt; width: 241px; cursor: pointer; height: 320px;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SeMHDsWvX6I/AAAAAAAAAV8/q6DpM-Eb-3w/s320/006.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎S Filtering &amp;amp; T Filtering:是延texture的座標軸(s,t)做blur。例如把兩個值都調成8的話，就可以看見一隻糊的青蛙。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SeMG1xIGGqI/AAAAAAAAAV0/FhTMOp4Yy1s/s1600-h/007.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324106705272183458" style="float: left; margin: 0pt 10px 10px 0pt; width: 246px; cursor: pointer; height: 320px;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SeMG1xIGGqI/AAAAAAAAAV0/FhTMOp4Yy1s/s320/007.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎在manifold的地方，接一個ST的node，就可以對這個ImageFile，延(s,t)做一些手腳。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SeMGorMSFNI/AAAAAAAAAVs/igs8RHZ1wjk/s1600-h/008.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324106480340833490" style="float: left; margin: 0pt 10px 10px 0pt; width: 320px; cursor: pointer; height: 235px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SeMGorMSFNI/AAAAAAAAAVs/igs8RHZ1wjk/s320/008.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎例如...把ST node的repeat的參數都調成2的話，就可以看到2x2=4隻青蛙。其餘的參數....就自己paly吧~&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeMGhurNMbI/AAAAAAAAAVk/QdonIbjBQcs/s1600-h/009.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324106361016758706" style="float: left; margin: 0pt 10px 10px 0pt; width: 186px; cursor: pointer; height: 320px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeMGhurNMbI/AAAAAAAAAVk/QdonIbjBQcs/s320/009.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎把上述的動作回歸到預設值。在Simple裡preview一下，可以看到如下圖。這裡是將Kb設為0.2，Displacement bound設為1。注意：Displacement bound的值要大於Kb的值。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeMGbMYLq8I/AAAAAAAAAVc/DYK_1PAw0AU/s1600-h/010.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324106248730946498" style="float: left; margin: 0pt 10px 10px 0pt; width: 200px; cursor: pointer; height: 320px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeMGbMYLq8I/AAAAAAAAAVc/DYK_1PAw0AU/s320/010.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎在場景中新增一個plane，隨便打點燈。建議新增的物件最好要是polygon，比起nurbs，較不會有接縫不連續的問題。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeMGSlaJzSI/AAAAAAAAAVU/tMCvFWYESHA/s1600-h/011.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324106100831276322" style="float: left; margin: 0pt 10px 10px 0pt; width: 320px; cursor: pointer; height: 282px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeMGSlaJzSI/AAAAAAAAAVU/tMCvFWYESHA/s320/011.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎將Diffuse以及Specular的color都調成50度的灰，render即可看到如下結果。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SeMFiCsC_bI/AAAAAAAAAVM/27ZytnqKMlA/s1600-h/012.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324105266877365682" style="float: left; margin: 0pt 10px 10px 0pt; width: 320px; cursor: pointer; height: 238px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SeMFiCsC_bI/AAAAAAAAAVM/27ZytnqKMlA/s320/012.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎看一下如果Displacement bound的值小於於Kb的值會怎麼樣。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SeMFb9WO44I/AAAAAAAAAVE/WAWlxWZeL6Y/s1600-h/013.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324105162364478338" style="float: left; margin: 0pt 10px 10px 0pt; width: 320px; cursor: pointer; height: 118px;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SeMFb9WO44I/AAAAAAAAAVE/WAWlxWZeL6Y/s320/013.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎就會看到出來的結果會有破洞&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeME63i8koI/AAAAAAAAAU8/bMV788b-Nnw/s1600-h/014.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5324104593871508098" style="float: left; margin: 0pt 10px 10px 0pt; width: 320px; cursor: pointer; height: 239px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SeME63i8koI/AAAAAAAAAU8/bMV788b-Nnw/s320/014.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-7139869737709469622?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/7139869737709469622/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/4displacement.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/7139869737709469622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/7139869737709469622'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/4displacement.html' title='(4)displacement及貼圖的基本運用'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__Eme0nfpM4Y/SeMHTxs7f-I/AAAAAAAAAWU/cmLmR8Pato0/s72-c/003.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-888870712140737739</id><published>2009-04-10T08:48:00.000-07:00</published><updated>2010-09-09T20:57:19.309-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='動畫領域的他山之石'/><title type='text'>Houdini強者:Jacys的blog</title><content type='html'>&lt;a href="http://tw.myblog.yahoo.com/chiao-pi"&gt;http://tw.myblog.yahoo.com/chiao-pi&lt;/a&gt; 他是我的一個好朋友~特效神人Jacys~Maya跟Houdini都很厲害喔!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-888870712140737739?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/888870712140737739/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/houdinijacysblog.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/888870712140737739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/888870712140737739'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/houdinijacysblog.html' title='Houdini強者:Jacys的blog'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-729891673123433890</id><published>2009-04-08T01:03:00.000-07:00</published><updated>2010-10-28T18:47:22.004-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My RenderMan Tutorial'/><title type='text'>(3)結合C和RenderMan API來輸出*.rib</title><content type='html'>這裡要先介紹一個很不錯的免費RenderMan:Pixie，可以去他的官方網站：http://www.renderpixie.com/ 下載。&lt;br /&gt;&lt;br /&gt;很多人以為RenderMan＝Pixar，事實上～RenderMan只是一套規格，符合這套規格的都可以稱做RenderMan。&lt;br /&gt;&lt;br /&gt;這裡用的程式編輯器是Visual Studio.Net 2005。安裝好Pixie後，除了把lib, include, dll...等，copy到Visual Studio.Net 2005對應的目錄下，還要在工具列上的專案→屬性→連結器→輸入→其他相依性，輸入ri.lib sdr.lib。然後，開啟Visual Studio 2005→檔案→新增→專案，選擇"Win32主控台應用程式"按下確定，在彈出視窗左邊的選擇應用程式設定→其他選項→空專案。這裡小轉是將project名稱命名為"RenderMan_Cube"。&lt;br /&gt;&lt;br /&gt;然後在原始檔案新增一個C++檔案，key入下面的code(參考資料為"The RenderMan Companion [Steve Upstill]")：&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;#include &amp;lt;ri.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#define NFRAMES 10 /* number of frame in the animation */&lt;br /&gt;#define NCUBES 5 /* # of minicubes on a side of the color cube */&lt;br /&gt;#define FRAMEROT 5.0 /* # of degrees to rotate cube between frames */&lt;br /&gt;&lt;br /&gt;#define L -0.5&lt;br /&gt;#define R 0.5&lt;br /&gt;#define D -0.5&lt;br /&gt;#define U 0.5&lt;br /&gt;#define F 0.5&lt;br /&gt;#define N -0.5&lt;br /&gt;&lt;br /&gt;void UnitCube()&lt;br /&gt;{&lt;br /&gt;   static RtPoint Cube[6][4]={&lt;br /&gt;       {{L,D,F}, {R,D,F}, {R,D,N}, {L,D,N}},&lt;br /&gt;       {{L,D,F}, {L,U,F}, {L,U,N}, {L,D,N}},&lt;br /&gt;       {{R,U,N}, {L,U,N}, {L,U,F}, {R,U,F}},&lt;br /&gt;       {{R,U,N}, {R,U,F}, {R,D,F}, {R,D,N}},&lt;br /&gt;       {{R,D,F}, {R,U,F}, {L,U,F}, {L,D,F}},&lt;br /&gt;       {{L,U,N}, {R,U,N}, {R,D,N}, {L,D,N}}&lt;br /&gt;   };&lt;br /&gt;   int i;&lt;br /&gt;&lt;br /&gt;   for(i=0;i&amp;lt;6;i++)&lt;br /&gt;       RiPolygon(4, RI_P, (RtPointer)Cube[i],RI_NULL);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void ColorCube(int n, float s)&lt;br /&gt;{&lt;br /&gt;   int x, y, z;&lt;br /&gt;   RtColor color;//宣告顏色變數&lt;br /&gt;   RtObjectHandle cube;//選告物件變數&lt;br /&gt;&lt;br /&gt;   if(n&amp;lt;=0)&lt;br /&gt;       return;&lt;br /&gt;&lt;br /&gt;   cube = RiObjectBegin();&lt;br /&gt;   UnitCube();&lt;br /&gt;&lt;br /&gt;   RiObjectEnd();&lt;br /&gt;&lt;br /&gt;   RiAttributeBegin();&lt;br /&gt;   RiTranslate(-0.5, -0.5, -0.5);&lt;br /&gt;   RiScale(1.0/n, 1.0/n, 1.0/n);//縮放&lt;br /&gt;&lt;br /&gt;   for(x=0; x&amp;lt;n; x++)&lt;br /&gt;   for(y=0; y&amp;lt;n; y++)&lt;br /&gt;   for(z=0; z&amp;lt;n; z++)&lt;br /&gt;   {&lt;br /&gt;       color[0]=((float)x+1)/((float)n);&lt;br /&gt;       color[1]=((float)y+1)/((float)n);&lt;br /&gt;       color[2]=((float)z+1)/((float)n);&lt;br /&gt;&lt;br /&gt;       RiColor(color);//指定個別cube的顏色&lt;br /&gt;       RiTransformBegin();//將transform的code"包"起來&lt;br /&gt;       RiTranslate(x+0.5, y+0.5, z+0.5);&lt;br /&gt;       RiScale(s, s, s);&lt;br /&gt;       RiObjectInstance(cube);&lt;br /&gt;       RiTransformEnd();&lt;br /&gt;   }&lt;br /&gt;   RiAttributeEnd();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void main()&lt;br /&gt;{&lt;br /&gt;   int frame;&lt;br /&gt;   float scale;&lt;br /&gt;   char filename[20];&lt;br /&gt;&lt;br /&gt;   RiBegin(RI_NULL); /*Start the renderer*/&lt;br /&gt;   RiLightSource("distantlight", RI_NULL);//指定light shader明成還有其參數&lt;br /&gt;&lt;br /&gt;   /*Viewing transformation*/&lt;br /&gt;   RiProjection("perspective", RI_NULL);//就是perspective,沒辦法更白話了 XD&lt;br /&gt;   RiTranslate(0.0, 0.0, 1.5);//位移&lt;br /&gt;   RiRotate(40.0, -1.0, 1.0, 0.0);//旋轉&lt;br /&gt;&lt;br /&gt;   for(frame=1; frame&amp;lt;=NFRAMES; frame++)&lt;br /&gt;   {&lt;br /&gt;       sprintf(filename, "anim%d.jpg", frame);&lt;br /&gt;       RiFrameBegin(frame);&lt;br /&gt;       RiDisplay(filename, "framebuffer", "rgb", RI_NULL);&lt;br /&gt;       RiWorldBegin();&lt;br /&gt;       scale=(float)(NFRAMES-(frame-1))/(float)NFRAMES;&lt;br /&gt;       RiRotate(FRAMEROT*frame, 0.0, 0.0, 1.0);//以z軸為中心旋轉&lt;br /&gt;       RiSurface("matte",RI_NULL);//指定surface shader名稱還有其參數&lt;br /&gt;       ColorCube(NCUBES, scale);&lt;br /&gt;       RiWorldEnd();&lt;br /&gt;       RiFrameEnd();&lt;br /&gt;   }&lt;br /&gt;   RiEnd();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;n;&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;有用過OpenGL的話，應該整個覺得很熟悉(話說小轉第一次用RenderMan API時，覺得根本就是OpenGL吧)。RenderMan的function名稱都是"Ri"開頭，變數名稱為"Rt"開頭。用紅色mark起來的那兩行程式碼，會在下面介紹其功用。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;執行後可以看到10個buffer(因為code中的frame數=10)，有5x5x5個cube在旋轉，且邊旋轉邊縮小(下兩張圖為示意)：&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdxdwkOTfFI/AAAAAAAAAUk/EF8w_2D_eHg/s1600-h/002.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5322231948583861330" style="margin: 0pt 10px 10px 0pt; float: left; width: 400px; cursor: pointer; height: 355px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdxdwkOTfFI/AAAAAAAAAUk/EF8w_2D_eHg/s400/002.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdxdrWCGAJI/AAAAAAAAAUc/ZqF5jE7wIw8/s1600-h/003.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5322231858875203730" style="margin: 0pt 10px 10px 0pt; float: left; width: 400px; cursor: pointer; height: 315px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdxdrWCGAJI/AAAAAAAAAUc/ZqF5jE7wIw8/s400/003.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdxdapgR-GI/AAAAAAAAAUU/xjy7pKhBL10/s1600-h/004.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5322231572044314722" style="margin: 0pt 10px 10px 0pt; float: left; width: 392px; cursor: pointer; height: 400px;" alt="" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdxdapgR-GI/AAAAAAAAAUU/xjy7pKhBL10/s400/004.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;◎如果將RiDisplay(filename, "framebuffer", "rgb", RI_NULL);中的"framebuffer"改成"file"來執行，則會在project底下產生10張*.jpg，且檔案名稱為filename。 &lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdxc0v6Sl2I/AAAAAAAAAUM/Oei5FSPzG34/s1600-h/005.jpg"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;img id="BLOGGER_PHOTO_ID_5322230920928991074" style="margin: 0pt 10px 10px 0pt; float: left; width: 400px; cursor: pointer; height: 275px;" alt="" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdxc0v6Sl2I/AAAAAAAAAUM/Oei5FSPzG34/s400/005.jpg" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdxcrX0ksWI/AAAAAAAAAUE/FUD42Fo4i7I/s1600-h/006.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5322230759843737954" style="margin: 0pt 10px 10px 0pt; float: left; width: 400px; cursor: pointer; height: 145px;" alt="" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdxcrX0ksWI/AAAAAAAAAUE/FUD42Fo4i7I/s400/006.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdxcUWYp7GI/AAAAAAAAAT8/fW_rojjWSvk/s1600-h/007.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5322230364321213538" style="margin: 0pt 10px 10px 0pt; float: left; width: 296px; cursor: pointer; height: 65px;" alt="" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdxcUWYp7GI/AAAAAAAAAT8/fW_rojjWSvk/s400/007.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;◎如果將&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;RiBegin(RI_NULL);&lt;span style="color: rgb(51, 0, 51);"&gt;的&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RI_NULL改成一個*.rib的名稱(這裡小轉是用"rotate_cubes.rib")，則會在project底下輸出一個名稱為rotate_cubes的*.rib(如上上圖)。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;◎將rotate_cubes.rib複製到Pixie\bin，並在命令提示字元裡，將路徑切換到Pixie\bin底下，輸入 rndr rotate_cubes.rib，則會在這個目錄底下產生如剛才的10張圖檔。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;注意：Pixar的RenderMan的render程式為prman，而Pixie的則為rndr。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;來看看這個rotate_cubes.rib，用文字編輯器開啟，可以看到如下的code(因為這code落落長，所以只截取部份)：&lt;/span&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;&lt;br /&gt;&lt;br /&gt;## Pixie 2.2.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;## Generated Tue Apr 07 23:41:15 2009&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;LightSource "distantlight" 1 &lt;span style="color: rgb(204, 51, 204);"&gt;&lt;br /&gt;#就是light shader以及其參數囉&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Projection "perspective" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Translate 0 0 1.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Rotate 40 -1 1 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;FrameBegin 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;#第一個frame開始！到下一個FrameEnd前，都是這個frame會render出來的東西&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Display "anim1.jpg" "file" "rgb" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;#輸出*.jpg，若是將file改成frmaebuffer，則會直接在一個視窗呈現(如第1張圖)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;WorldBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Rotate 5 0 0 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Surface "matte" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;ObjectBegin 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [-0.5 -0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 -0.5 -0.5 -0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [-0.5 -0.5 0.5 -0.5 0.5 0.5 -0.5 0.5 -0.5 -0.5 -0.5 -0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [0.5 0.5 -0.5 -0.5 0.5 -0.5 -0.5 0.5 0.5 0.5 0.5 0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [0.5 0.5 -0.5 0.5 0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [0.5 -0.5 0.5 0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [-0.5 0.5 -0.5 0.5 0.5 -0.5 0.5 -0.5 -0.5 -0.5 -0.5 -0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;ObjectEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;AttributeBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Translate -0.5 -0.5 -0.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Scale 0.2 0.2 0.2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Color [0.2 0.2 0.2]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;TransformBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Translate 0.5 0.5 0.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Scale 1 1 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;ObjectInstance 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;TransformEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Color [0.2 0.2 0.4]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;TransformBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Translate 0.5 0.5 1.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Scale 1 1 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;ObjectInstance 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;TransformEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Color [0.2 0.2 0.6]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;TransformBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Translate 0.5 0.5 2.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Scale 1 1 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;ObjectInstance 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;TransformEnd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;~~~我是code分隔線~~~&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;AttributeEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;WorldEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;FrameEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;#這是對應上面的FrameBegin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;FrameBegin 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;#第二個frame開始！&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Display "anim2.jpg" "file" "rgb" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;WorldBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Rotate 10 0 0 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Surface "matte" &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;ObjectBegin 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [-0.5 -0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 -0.5 -0.5 -0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [-0.5 -0.5 0.5 -0.5 0.5 0.5 -0.5 0.5 -0.5 -0.5 -0.5 -0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [0.5 0.5 -0.5 -0.5 0.5 -0.5 -0.5 0.5 0.5 0.5 0.5 0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [0.5 0.5 -0.5 0.5 0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [0.5 -0.5 0.5 0.5 0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Polygon "P" [-0.5 0.5 -0.5 0.5 0.5 -0.5 0.5 -0.5 -0.5 -0.5 -0.5 -0.5 ] &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;ObjectEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;AttributeBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Translate -0.5 -0.5 -0.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Scale 0.2 0.2 0.2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Color [0.2 0.2 0.2]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;TransformBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;Translate 0.5 0.5 0.5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;~~~我是code分隔線~~~&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;其實....看的出來都是很白話的code，就懶的各個做解釋了XD。也很明顯的可以觀察出*.rib和*.cpp的對應關係。&lt;/span&gt;&lt;/n;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-729891673123433890?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/729891673123433890/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/3crenderman-apirib.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/729891673123433890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/729891673123433890'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/3crenderman-apirib.html' title='(3)結合C和RenderMan API來輸出*.rib'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__Eme0nfpM4Y/SdxdwkOTfFI/AAAAAAAAAUk/EF8w_2D_eHg/s72-c/002.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-4382957231598246583</id><published>2009-04-07T06:17:00.000-07:00</published><updated>2010-10-28T18:52:44.011-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My RenderMan Tutorial'/><title type='text'>(2)什麼是RIB</title><content type='html'>在解釋什麼是rib之前呢，先說明RenderMan在render每個object時，為了使object在render之後，呈現出某些質感；例如金 屬、玻璃、木頭...等，分別在各個object上assign各個質感的shader。而RenderMan用來紀錄這些資訊的檔案，就叫 做"RenderMan Interface Byte stream file"，簡寫為『RIB』。這樣的檔案，副檔名也為"rib"，RenderMan就是先產生這樣的*.rib，再用丟給render的程式去產生圖 檔。(例如Pixar出的RenderMan的render的檔案名稱為prman)&lt;br /&gt;&lt;br /&gt;下面來介紹一下用mtor產生的rib吧～&lt;br /&gt;&lt;br /&gt;◎為了方便了解，把上一篇的Ensemble、Delux和Simple後面加上"_test".&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdv-adqeA0I/AAAAAAAAASY/WcGm5usDmWk/s1600-h/001.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 262px; height: 400px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdv-adqeA0I/AAAAAAAAASY/WcGm5usDmWk/s400/001.jpg" alt="" id="BLOGGER_PHOTO_ID_5322127115261182786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　&lt;br /&gt;&lt;br /&gt;◎新增一個spot light，並將其assign給上一篇檔案scene的spot light.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdv-SFfn6FI/AAAAAAAAASQ/UIPmTmzgJ6w/s1600-h/002.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 353px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdv-SFfn6FI/AAAAAAAAASQ/UIPmTmzgJ6w/s400/002.jpg" alt="" id="BLOGGER_PHOTO_ID_5322126971334289490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　&lt;br /&gt;&lt;br /&gt;◎在maya的export選項中，選"MTOR_RIBArchive"，然後輸出一個*.rib（這裡用的名稱是"RIB_test"）&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdv-MGRQCII/AAAAAAAAASI/nK4_6x2JaWE/s1600-h/003.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 269px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdv-MGRQCII/AAAAAAAAASI/nK4_6x2JaWE/s400/003.jpg" alt="" id="BLOGGER_PHOTO_ID_5322126868463224962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　　　　　　　　　　　　　　　　　　　　　　　　　　&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;◎用文字編輯器開啟剛剛輸出的"RIB_test.rib"，可以看到以下內容：&lt;br /&gt;（有學過OpenGL的人，應該會覺得這種東西很親切，因為什麼東西都是'Begin'和'End'成對出現）&lt;br /&gt;◎注意～這跟真正丟下去render的*.rib內容不一樣，真正去render的*.rib裡，還會有"WorldBegin"&amp;amp;"WorldEnd"、"FrameBegin"&amp;amp;"FrameEnd"等較完整的資訊。這部份的基本介紹，打算寫在下一篇網誌裡，這裡先只標示出shader跟geometry資訊在什麼地方。rib用來mark註解的符號是"#".&lt;br /&gt;◎至於什麼是surface shader和displacement shader....可以參考一個很棒的網站：http://www.fundza.com/，而是想把這部份跟mtor的SLBox寫在同一個網誌裡......(遠目 @@)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;##RenderMan RIB-Structure 1.1 Entity&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;##Creator mtor 7.0.1 (Oct  4 2007 03:05:10)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;##For spin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;##CreationDate Tue Apr 07 07:27:39 2009&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;version 3.04&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;AttributeBegin &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    IfBegin "!defined(RATFilterLightSource)"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    TransformBegin &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Attribute "identifier" "string name" ["spotLightShape1"]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Transform [-1 -6.42572e-017 -1.04248e-016 0 0 0.851277 -0.524717 0 1.22461e-016 -0.524717 -0.851277 0 0 12.2471 14.8691 1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        #slim light Spot_test &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        TransformBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        #torattr write EmitsPhotons 0 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        &lt;span style="color: rgb(255, 0, 0);"&gt;LightSource "rmanshader/Spot_test" "e-___NtZQd400000-spotLightShape1" "float ConeAngle" [ 30.0000128573 ] "float PenumbraAngle" [ 0.0 ] &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;　　#這是燈光shader以及其相關參數的設定，在maya檔裡，是給燈光一個spot light的shader&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        TransformEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    TransformEnd &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    IfEnd &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    AttributeBegin &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        ResourceBegin &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;       &lt;span style="color: rgb(255, 0, 0);"&gt; Attribute "identifier" "name" ["|nurbsSphere1|nurbsSphereShape1"]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;　　#這是geometry資訊的位置，在maya裡是建置一粒nubrs的sphere&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        ConcatTransform [1 0 0 0 0 1 0 0 0 0 1 0 0.102705 0 0.225856 1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        ShadingInterpolation "smooth"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        IfBegin "!defined(RATFilterLightSource)"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        IfEnd &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        TransformBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        #slim ensemble Ensemble_test &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;         Attribute "sides"  "int doubleshaded" [0]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Attribute "visibility" "string transmission" ["opaque"]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Scale 1 1 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Attribute "shade"  "float volumeintersectionpriority" [0]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Opacity [1 1 1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Color [0 .25 1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        Attribute "trace"  "int samplemotion" [0] "int displacements" [0]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        IfBegin "!defined(user:RATFilterSurface)"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        #slim shadingmodel_aov Delux_test &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        TransformBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        &lt;span style="color: rgb(255, 0, 0);"&gt;Surface "rmanshader/Delux_test" &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;   #這裡surface shader資訊，在maya檔裡，是配置給sphere的名稱是Delux_test&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        TransformEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        IfEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        IfBegin "!defined(user:RATFilterDisplacement)"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        #slim displacement Simple_test &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        TransformBegin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        &lt;span style="color: rgb(255, 0, 0);"&gt;Displacement "rmanshader/Simple_test" &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;　　#這裡diaplacement shader資訊，在maya檔裡，是配置給sphere的名稱是Simple_test&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        TransformEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        IfEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        TransformEnd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        NuPatch 11 4 [-0.25 -0.25 -0.125&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1 1.125 1.25 1.25] 0 1 7 4 [0 0 0 0 0.25 0.5 0.75 1 1 1 1] 0 1 "Pw" [4.58348e-016 -4.77621 -1.20915e-015 1 4.58348e-016 -4.77621 -1.20915e-015 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        4.58348e-016 -4.77621 -1.20915e-015 1 4.58348e-016 -4.77621 -1.20915e-015 1 4.58348e-016 -4.77621 -1.20915e-015 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        4.58348e-016 -4.77621 -1.20915e-015 1 4.58348e-016 -4.77621 -1.20915e-015 1 4.58348e-016 -4.77621 -1.20915e-015 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        4.58348e-016 -4.77621 -1.20915e-015 1 4.58348e-016 -4.77621 -1.20915e-015 1 4.58348e-016 -4.77621 -1.20915e-015 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        0.954845 -4.77621 -0.954845 1 1.35036 -4.77621 -2.9713e-016 1 0.954845 -4.77621 0.954845 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        5.50029e-016 -4.77621 1.35036 1 -0.954845 -4.77621 0.954845 1 -1.35036 -4.77621 2.7316e-016 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        -0.954845 -4.77621 -0.954845 1 -8.84009e-016 -4.77621 -1.35036 1 0.954845 -4.77621 -0.954845 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        1.35036 -4.77621 -2.9713e-016 1 0.954845 -4.77621 0.954845 1 2.9442 -3.7427 -2.9442 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        4.16373 -3.7427 5.01798e-016 1 2.9442 -3.7427 2.9442 1 9.50604e-016 -3.7427 4.16373 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        -2.9442 -3.7427 2.9442 1 -4.16373 -3.7427 7.69498e-016 1 -2.9442 -3.7427 -2.9442 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        -1.98041e-015 -3.7427 -4.16373 1 2.9442 -3.7427 -2.9442 1 4.16373 -3.7427 5.01798e-016 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        2.9442 -3.7427 2.9442 1 4.14194 3.12144e-016 -4.14194 1 5.85759 5.85233e-017 1.38563e-015 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        4.14194 -1.95098e-016 4.14194 1 9.80036e-016 -3.00151e-016 5.85759 1 -4.14194 -1.95098e-016 4.14194 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        -5.85759 5.85233e-017 1.04766e-015 1 -4.14194 3.12144e-016 -4.14194 1 -2.42878e-015 4.17197e-016 -5.85759 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        4.14194 3.12144e-016 -4.14194 1 5.85759 5.85233e-017 1.38563e-015 1 4.14194 -1.95098e-016 4.14194 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        2.9442 3.7427 -2.9442 1 4.16373 3.7427 1.46808e-015 1 2.9442 3.7427 2.9442 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        4.42665e-016 3.7427 4.16373 1 -2.9442 3.7427 2.9442 1 -4.16373 3.7427 7.19908e-016 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        -2.9442 3.7427 -2.9442 1 -1.47247e-015 3.7427 -4.16373 1 2.9442 3.7427 -2.9442 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        4.16373 3.7427 1.46808e-015 1 2.9442 3.7427 2.9442 1 0.954845 4.77621 -0.954845 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        1.35036 4.77621 9.3599e-016 1 0.954845 4.77621 0.954845 1 -9.81727e-017 4.77621 1.35036 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        -0.954845 4.77621 0.954845 1 -1.35036 4.77621 2.09875e-016 1 -0.954845 4.77621 -0.954845 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        -2.35807e-016 4.77621 -1.35036 1 0.954845 4.77621 -0.954845 1 1.35036 4.77621 9.3599e-016 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        0.954845 4.77621 0.954845 1 8.31046e-016 4.77621 -8.02387e-017 1 8.31046e-016 4.77621 -8.02387e-017 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        8.31046e-016 4.77621 -8.02387e-017 1 8.31046e-016 4.77621 -8.02387e-017 1 8.31046e-016 4.77621 -8.02387e-017 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        8.31046e-016 4.77621 -8.02387e-017 1 8.31046e-016 4.77621 -8.02387e-017 1 8.31046e-016 4.77621 -8.02387e-017 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        8.31046e-016 4.77621 -8.02387e-017 1 8.31046e-016 4.77621 -8.02387e-017 1 8.31046e-016 4.77621 -8.02387e-017 1]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        ResourceEnd &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    AttributeEnd &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;AttributeEnd &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-4382957231598246583?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/4382957231598246583/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/2rib.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/4382957231598246583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/4382957231598246583'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/2rib.html' title='(2)什麼是RIB'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdv-adqeA0I/AAAAAAAAASY/WcGm5usDmWk/s72-c/001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-5199368388921497181</id><published>2009-04-06T19:38:00.000-07:00</published><updated>2009-04-07T03:07:50.403-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='踏青~'/><title type='text'>20090405陽明山採海芋</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdsl6OPne_I/AAAAAAAAAR0/lFHhGg4XaU8/s1600-h/P1000148.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdsl6OPne_I/AAAAAAAAAR0/lFHhGg4XaU8/s320/P1000148.JPG" alt="" id="BLOGGER_PHOTO_ID_5321889066854611954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsllNsrQAI/AAAAAAAAARs/HJSMCENsK1o/s1600-h/P1000149.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsllNsrQAI/AAAAAAAAARs/HJSMCENsK1o/s320/P1000149.JPG" alt="" id="BLOGGER_PHOTO_ID_5321888705930805250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdsk8oyW-pI/AAAAAAAAARk/zZCE2bp4nq8/s1600-h/P1000153.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdsk8oyW-pI/AAAAAAAAARk/zZCE2bp4nq8/s320/P1000153.JPG" alt="" id="BLOGGER_PHOTO_ID_5321888008827763346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdsj-Yt8uBI/AAAAAAAAARc/R5X-YywVxAo/s1600-h/P1000154.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdsj-Yt8uBI/AAAAAAAAARc/R5X-YywVxAo/s320/P1000154.JPG" alt="" id="BLOGGER_PHOTO_ID_5321886939362408466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsjZGefVTI/AAAAAAAAARU/5ZwcqaviUKo/s1600-h/P1000155.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsjZGefVTI/AAAAAAAAARU/5ZwcqaviUKo/s320/P1000155.JPG" alt="" id="BLOGGER_PHOTO_ID_5321886298810570034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdsidz3_S7I/AAAAAAAAARM/oDOgXzFKGDE/s1600-h/P1000156.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdsidz3_S7I/AAAAAAAAARM/oDOgXzFKGDE/s320/P1000156.JPG" alt="" id="BLOGGER_PHOTO_ID_5321885280204966834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdshMMBUfBI/AAAAAAAAARE/RcSPELTJBys/s1600-h/P1000157.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdshMMBUfBI/AAAAAAAAARE/RcSPELTJBys/s320/P1000157.JPG" alt="" id="BLOGGER_PHOTO_ID_5321883877937282066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdsgYkDgpHI/AAAAAAAAAQ8/jXpnv2i3D5w/s1600-h/P1000159.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdsgYkDgpHI/AAAAAAAAAQ8/jXpnv2i3D5w/s320/P1000159.JPG" alt="" id="BLOGGER_PHOTO_ID_5321882991035720818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdsf9eJAXlI/AAAAAAAAAQ0/kKi810LMAVk/s1600-h/P1000160.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdsf9eJAXlI/AAAAAAAAAQ0/kKi810LMAVk/s320/P1000160.JPG" alt="" id="BLOGGER_PHOTO_ID_5321882525591690834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsfWlBGQXI/AAAAAAAAAQs/r-PJgDpTlaU/s1600-h/P1000161.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsfWlBGQXI/AAAAAAAAAQs/r-PJgDpTlaU/s320/P1000161.JPG" alt="" id="BLOGGER_PHOTO_ID_5321881857422672242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdscTCfPinI/AAAAAAAAAQk/mYoGz84QBHw/s1600-h/P1000164.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdscTCfPinI/AAAAAAAAAQk/mYoGz84QBHw/s320/P1000164.JPG" alt="" id="BLOGGER_PHOTO_ID_5321878498079378034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsbvPelbqI/AAAAAAAAAQc/Z5fk5yfyiWg/s1600-h/P1000165.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsbvPelbqI/AAAAAAAAAQc/Z5fk5yfyiWg/s320/P1000165.JPG" alt="" id="BLOGGER_PHOTO_ID_5321877883090988706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdsa3O309NI/AAAAAAAAAQU/MCkU7IchuAc/s1600-h/P1000166.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdsa3O309NI/AAAAAAAAAQU/MCkU7IchuAc/s320/P1000166.JPG" alt="" id="BLOGGER_PHOTO_ID_5321876920855753938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsaB6lCpzI/AAAAAAAAAQM/jTqWl1lMM_o/s1600-h/P1000167.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsaB6lCpzI/AAAAAAAAAQM/jTqWl1lMM_o/s320/P1000167.JPG" alt="" id="BLOGGER_PHOTO_ID_5321876004875183922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsZapD7VqI/AAAAAAAAAQE/dV_3r-_AoLQ/s1600-h/P1000168.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsZapD7VqI/AAAAAAAAAQE/dV_3r-_AoLQ/s320/P1000168.JPG" alt="" id="BLOGGER_PHOTO_ID_5321875330157991586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsYut5VMaI/AAAAAAAAAP8/UZhmlw_L5cs/s1600-h/P1000169.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsYut5VMaI/AAAAAAAAAP8/UZhmlw_L5cs/s320/P1000169.JPG" alt="" id="BLOGGER_PHOTO_ID_5321874575541481890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsWXqVTdbI/AAAAAAAAAP0/cqcNix4On0A/s1600-h/P1000171.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsWXqVTdbI/AAAAAAAAAP0/cqcNix4On0A/s320/P1000171.JPG" alt="" id="BLOGGER_PHOTO_ID_5321871980424820146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsS_KFYp1I/AAAAAAAAAPs/viQr-GqT23w/s1600-h/P1000172.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsS_KFYp1I/AAAAAAAAAPs/viQr-GqT23w/s320/P1000172.JPG" alt="" id="BLOGGER_PHOTO_ID_5321868260916373330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsSl9Dd2UI/AAAAAAAAAPk/7gW2WoSpcek/s1600-h/P1000174.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsSl9Dd2UI/AAAAAAAAAPk/7gW2WoSpcek/s320/P1000174.JPG" alt="" id="BLOGGER_PHOTO_ID_5321867827921934658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsR6xRCC0I/AAAAAAAAAPc/H3CzHhXrj6Y/s1600-h/P1000175.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsR6xRCC0I/AAAAAAAAAPc/H3CzHhXrj6Y/s320/P1000175.JPG" alt="" id="BLOGGER_PHOTO_ID_5321867086023232322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsRi6Ii9uI/AAAAAAAAAPU/hETQFMobJ84/s1600-h/P1000176.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsRi6Ii9uI/AAAAAAAAAPU/hETQFMobJ84/s320/P1000176.JPG" alt="" id="BLOGGER_PHOTO_ID_5321866676086699746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsQ7bIHnTI/AAAAAAAAAPM/czmHkgkEbVI/s1600-h/P1000177.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsQ7bIHnTI/AAAAAAAAAPM/czmHkgkEbVI/s320/P1000177.JPG" alt="" id="BLOGGER_PHOTO_ID_5321865997748510002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsQGz7JQyI/AAAAAAAAAPE/m88ykgufdJw/s1600-h/P1000178.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsQGz7JQyI/AAAAAAAAAPE/m88ykgufdJw/s320/P1000178.JPG" alt="" id="BLOGGER_PHOTO_ID_5321865093871911714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsPR3ZI_GI/AAAAAAAAAO8/QCvqSoCCoaY/s1600-h/P1000180.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsPR3ZI_GI/AAAAAAAAAO8/QCvqSoCCoaY/s320/P1000180.JPG" alt="" id="BLOGGER_PHOTO_ID_5321864184269962338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdsN86NnoEI/AAAAAAAAAO0/F-Y_Q1d2YBM/s1600-h/P1000181.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdsN86NnoEI/AAAAAAAAAO0/F-Y_Q1d2YBM/s320/P1000181.JPG" alt="" id="BLOGGER_PHOTO_ID_5321862724738064450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsMpvtVt0I/AAAAAAAAAOs/UQfiy2Dsvfs/s1600-h/P1000182.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsMpvtVt0I/AAAAAAAAAOs/UQfiy2Dsvfs/s320/P1000182.JPG" alt="" id="BLOGGER_PHOTO_ID_5321861295989176130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsLsBjrDTI/AAAAAAAAAOk/PTkqx6nDiIU/s1600-h/P1000183.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsLsBjrDTI/AAAAAAAAAOk/PTkqx6nDiIU/s320/P1000183.JPG" alt="" id="BLOGGER_PHOTO_ID_5321860235628580146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsKV-rIn1I/AAAAAAAAAOc/l27wk7Qy-3w/s1600-h/P1000184.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsKV-rIn1I/AAAAAAAAAOc/l27wk7Qy-3w/s320/P1000184.JPG" alt="" id="BLOGGER_PHOTO_ID_5321858757385822034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsJzCBvr3I/AAAAAAAAAOU/PTZuCcm5fGI/s1600-h/P1000186.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsJzCBvr3I/AAAAAAAAAOU/PTZuCcm5fGI/s320/P1000186.JPG" alt="" id="BLOGGER_PHOTO_ID_5321858156990541682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsJUeRCwoI/AAAAAAAAAOM/w8gtDdeG39Q/s1600-h/P1000187.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsJUeRCwoI/AAAAAAAAAOM/w8gtDdeG39Q/s320/P1000187.JPG" alt="" id="BLOGGER_PHOTO_ID_5321857631994954370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsIsb1Q7lI/AAAAAAAAAOE/VBPYZKIqbGc/s1600-h/P1000188.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdsIsb1Q7lI/AAAAAAAAAOE/VBPYZKIqbGc/s320/P1000188.JPG" alt="" id="BLOGGER_PHOTO_ID_5321856944146804306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsH8mfpN9I/AAAAAAAAAN8/z9qu_w_TMA0/s1600-h/P1000189.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdsH8mfpN9I/AAAAAAAAAN8/z9qu_w_TMA0/s320/P1000189.JPG" alt="" id="BLOGGER_PHOTO_ID_5321856122375190482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdsHjBqe3oI/AAAAAAAAAN0/h8RjAs_5Ca0/s1600-h/P1000190.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdsHjBqe3oI/AAAAAAAAAN0/h8RjAs_5Ca0/s320/P1000190.JPG" alt="" id="BLOGGER_PHOTO_ID_5321855682991808130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsC2yOhhHI/AAAAAAAAANs/EWM_6Tgga-U/s1600-h/P1000191.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdsC2yOhhHI/AAAAAAAAANs/EWM_6Tgga-U/s320/P1000191.JPG" alt="" id="BLOGGER_PHOTO_ID_5321850524887254130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdr_BjGDxxI/AAAAAAAAANk/Qx9JW7AlGeo/s1600-h/P1000192.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdr_BjGDxxI/AAAAAAAAANk/Qx9JW7AlGeo/s320/P1000192.JPG" alt="" id="BLOGGER_PHOTO_ID_5321846311757268754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdr12ikF4eI/AAAAAAAAANc/lMeqEzcS0ec/s1600-h/P1000193.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdr12ikF4eI/AAAAAAAAANc/lMeqEzcS0ec/s320/P1000193.JPG" alt="" id="BLOGGER_PHOTO_ID_5321836227031589346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrzrNVkOuI/AAAAAAAAANU/E1dFaFnF2-M/s1600-h/P1000194.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrzrNVkOuI/AAAAAAAAANU/E1dFaFnF2-M/s320/P1000194.JPG" alt="" id="BLOGGER_PHOTO_ID_5321833833331702498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdryvBW5H1I/AAAAAAAAANM/uUd3IAXPD5g/s1600-h/P1000195.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdryvBW5H1I/AAAAAAAAANM/uUd3IAXPD5g/s320/P1000195.JPG" alt="" id="BLOGGER_PHOTO_ID_5321832799323889490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrxKojWwPI/AAAAAAAAANE/qlFUcvDHPPY/s1600-h/P1000196.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrxKojWwPI/AAAAAAAAANE/qlFUcvDHPPY/s320/P1000196.JPG" alt="" id="BLOGGER_PHOTO_ID_5321831074678358258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrwsfwW5AI/AAAAAAAAAM8/So7ePiNcPWE/s1600-h/P1000197.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrwsfwW5AI/AAAAAAAAAM8/So7ePiNcPWE/s320/P1000197.JPG" alt="" id="BLOGGER_PHOTO_ID_5321830556920898562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrkUR97P5I/AAAAAAAAAM0/rptVErpxjqc/s1600-h/P1000198.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrkUR97P5I/AAAAAAAAAM0/rptVErpxjqc/s320/P1000198.JPG" alt="" id="BLOGGER_PHOTO_ID_5321816946763317138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdrjtQEkOOI/AAAAAAAAAMs/ucxipMnIyl4/s1600-h/P1000199.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdrjtQEkOOI/AAAAAAAAAMs/ucxipMnIyl4/s320/P1000199.JPG" alt="" id="BLOGGER_PHOTO_ID_5321816276239399138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdriYquB1uI/AAAAAAAAAMk/qlMWWTGrbms/s1600-h/P1000200.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdriYquB1uI/AAAAAAAAAMk/qlMWWTGrbms/s320/P1000200.JPG" alt="" id="BLOGGER_PHOTO_ID_5321814823103747810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdrh6oAejQI/AAAAAAAAAMc/EeeYIR2xjwQ/s1600-h/P1000201.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdrh6oAejQI/AAAAAAAAAMc/EeeYIR2xjwQ/s320/P1000201.JPG" alt="" id="BLOGGER_PHOTO_ID_5321814306979745026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrgmM9e1BI/AAAAAAAAAMU/kKAMRB3529M/s1600-h/P1000202.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrgmM9e1BI/AAAAAAAAAMU/kKAMRB3529M/s320/P1000202.JPG" alt="" id="BLOGGER_PHOTO_ID_5321812856610411538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdrf-LZ6GeI/AAAAAAAAAMM/OciUs9Jfkd8/s1600-h/P1000203.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdrf-LZ6GeI/AAAAAAAAAMM/OciUs9Jfkd8/s320/P1000203.JPG" alt="" id="BLOGGER_PHOTO_ID_5321812168998001122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrfHuiC1II/AAAAAAAAAME/lbfTmbG3ZdE/s1600-h/P1000204.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrfHuiC1II/AAAAAAAAAME/lbfTmbG3ZdE/s320/P1000204.JPG" alt="" id="BLOGGER_PHOTO_ID_5321811233534563458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdrds_sd6lI/AAAAAAAAAL8/WidNBK8Mei8/s1600-h/P1000205.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdrds_sd6lI/AAAAAAAAAL8/WidNBK8Mei8/s320/P1000205.JPG" alt="" id="BLOGGER_PHOTO_ID_5321809674773588562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdrc-3CAyoI/AAAAAAAAAL0/dbqi5eXGWhY/s1600-h/P1000206.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdrc-3CAyoI/AAAAAAAAAL0/dbqi5eXGWhY/s320/P1000206.JPG" alt="" id="BLOGGER_PHOTO_ID_5321808882174052994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdrcj8YBGFI/AAAAAAAAALs/dhLMg4WOjv4/s1600-h/P1000208.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdrcj8YBGFI/AAAAAAAAALs/dhLMg4WOjv4/s320/P1000208.JPG" alt="" id="BLOGGER_PHOTO_ID_5321808419752056914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrcM4G1h-I/AAAAAAAAALk/2WzRqEyMrXY/s1600-h/P1000209.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrcM4G1h-I/AAAAAAAAALk/2WzRqEyMrXY/s320/P1000209.JPG" alt="" id="BLOGGER_PHOTO_ID_5321808023469262818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdrbq51o0tI/AAAAAAAAALc/cC3OJdH4Rqs/s1600-h/P1000210.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdrbq51o0tI/AAAAAAAAALc/cC3OJdH4Rqs/s320/P1000210.JPG" alt="" id="BLOGGER_PHOTO_ID_5321807439818445522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrafxE4xAI/AAAAAAAAALU/DxAFAW8lZx4/s1600-h/P1000211.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrafxE4xAI/AAAAAAAAALU/DxAFAW8lZx4/s320/P1000211.JPG" alt="" id="BLOGGER_PHOTO_ID_5321806148976296962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrZu9W9rYI/AAAAAAAAALM/bslfBw2Atp0/s1600-h/P1000213.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrZu9W9rYI/AAAAAAAAALM/bslfBw2Atp0/s320/P1000213.JPG" alt="" id="BLOGGER_PHOTO_ID_5321805310459751810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrY6N037QI/AAAAAAAAALE/ZIbahZCTOVc/s1600-h/P1000212.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrY6N037QI/AAAAAAAAALE/ZIbahZCTOVc/s320/P1000212.JPG" alt="" id="BLOGGER_PHOTO_ID_5321804404347104514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdrQp7myTUI/AAAAAAAAAK8/IOMG75t9xkA/s1600-h/P1000214.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdrQp7myTUI/AAAAAAAAAK8/IOMG75t9xkA/s320/P1000214.JPG" alt="" id="BLOGGER_PHOTO_ID_5321795328485248322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrQF_g7uvI/AAAAAAAAAK0/FT8QiC5P0jA/s1600-h/P1000217.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrQF_g7uvI/AAAAAAAAAK0/FT8QiC5P0jA/s320/P1000217.JPG" alt="" id="BLOGGER_PHOTO_ID_5321794711059151602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrPrE-UMeI/AAAAAAAAAKs/jgPBt7eZdlE/s1600-h/P1000218.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrPrE-UMeI/AAAAAAAAAKs/jgPBt7eZdlE/s320/P1000218.JPG" alt="" id="BLOGGER_PHOTO_ID_5321794248668099042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrPUTXu8iI/AAAAAAAAAKk/537-3q1VDVk/s1600-h/P1000219.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrPUTXu8iI/AAAAAAAAAKk/537-3q1VDVk/s320/P1000219.JPG" alt="" id="BLOGGER_PHOTO_ID_5321793857395814946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrLEbJ-vBI/AAAAAAAAAKc/zCliC8yG5gk/s1600-h/P1000220.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrLEbJ-vBI/AAAAAAAAAKc/zCliC8yG5gk/s320/P1000220.JPG" alt="" id="BLOGGER_PHOTO_ID_5321789186561195026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrKuoC4wHI/AAAAAAAAAKU/9fPBxgWcKyk/s1600-h/P1000221.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrKuoC4wHI/AAAAAAAAAKU/9fPBxgWcKyk/s320/P1000221.JPG" alt="" id="BLOGGER_PHOTO_ID_5321788812063981682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrJ0Sw968I/AAAAAAAAAKM/c3FOpzVxkB4/s1600-h/P1000223.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrJ0Sw968I/AAAAAAAAAKM/c3FOpzVxkB4/s320/P1000223.JPG" alt="" id="BLOGGER_PHOTO_ID_5321787809919265730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrI-ik9cfI/AAAAAAAAAKE/VUjvVbxMogE/s1600-h/P1000226.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdrI-ik9cfI/AAAAAAAAAKE/VUjvVbxMogE/s320/P1000226.JPG" alt="" id="BLOGGER_PHOTO_ID_5321786886450934258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrIMBd05uI/AAAAAAAAAJ8/atP7GXFzqSc/s1600-h/P1000228.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrIMBd05uI/AAAAAAAAAJ8/atP7GXFzqSc/s320/P1000228.JPG" alt="" id="BLOGGER_PHOTO_ID_5321786018569184994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrHh-7tT4I/AAAAAAAAAJ0/DRe6JUevQiY/s1600-h/P1000229.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrHh-7tT4I/AAAAAAAAAJ0/DRe6JUevQiY/s320/P1000229.JPG" alt="" id="BLOGGER_PHOTO_ID_5321785296334704514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrF9qGw_yI/AAAAAAAAAJs/bIRbJObkELc/s1600-h/P1000231.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrF9qGw_yI/AAAAAAAAAJs/bIRbJObkELc/s320/P1000231.JPG" alt="" id="BLOGGER_PHOTO_ID_5321783572757020450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrFCyUp8rI/AAAAAAAAAJk/QldikAH7_7Y/s1600-h/P1000232.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrFCyUp8rI/AAAAAAAAAJk/QldikAH7_7Y/s320/P1000232.JPG" alt="" id="BLOGGER_PHOTO_ID_5321782561350480562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdrES4jqN8I/AAAAAAAAAJc/0b4UmfMzszc/s1600-h/P1000233.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdrES4jqN8I/AAAAAAAAAJc/0b4UmfMzszc/s320/P1000233.JPG" alt="" id="BLOGGER_PHOTO_ID_5321781738390304706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrCiC8YO3I/AAAAAAAAAJU/aiCIas-JZjg/s1600-h/P1000234.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrCiC8YO3I/AAAAAAAAAJU/aiCIas-JZjg/s320/P1000234.JPG" alt="" id="BLOGGER_PHOTO_ID_5321779799853120370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrBxF_6s6I/AAAAAAAAAJM/aJvujwoLVOY/s1600-h/P1000240.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdrBxF_6s6I/AAAAAAAAAJM/aJvujwoLVOY/s320/P1000240.JPG" alt="" id="BLOGGER_PHOTO_ID_5321778958859678626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrA6sXSnEI/AAAAAAAAAJE/eK8h0Sqsf88/s1600-h/P1000241.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdrA6sXSnEI/AAAAAAAAAJE/eK8h0Sqsf88/s320/P1000241.JPG" alt="" id="BLOGGER_PHOTO_ID_5321778024265456706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdrAIgGbjGI/AAAAAAAAAI8/G_ZPUZC9abs/s1600-h/P1000242.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdrAIgGbjGI/AAAAAAAAAI8/G_ZPUZC9abs/s320/P1000242.JPG" alt="" id="BLOGGER_PHOTO_ID_5321777161980054626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdq_hQvz5OI/AAAAAAAAAI0/i9KwK2VqgRI/s1600-h/P1000244.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdq_hQvz5OI/AAAAAAAAAI0/i9KwK2VqgRI/s320/P1000244.JPG" alt="" id="BLOGGER_PHOTO_ID_5321776487843751138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdq-7njYxfI/AAAAAAAAAIs/YC46s1JilQQ/s1600-h/P1000245.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdq-7njYxfI/AAAAAAAAAIs/YC46s1JilQQ/s320/P1000245.JPG" alt="" id="BLOGGER_PHOTO_ID_5321775841130628594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdq95PN5mjI/AAAAAAAAAIk/MizxZzgO0So/s1600-h/P1000247.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdq95PN5mjI/AAAAAAAAAIk/MizxZzgO0So/s320/P1000247.JPG" alt="" id="BLOGGER_PHOTO_ID_5321774700726688306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdq9SP0J5yI/AAAAAAAAAIc/gnEjdyJjYOY/s1600-h/P1000248.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdq9SP0J5yI/AAAAAAAAAIc/gnEjdyJjYOY/s320/P1000248.JPG" alt="" id="BLOGGER_PHOTO_ID_5321774030872241954" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-5199368388921497181?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/5199368388921497181/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/20090405.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5199368388921497181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5199368388921497181'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/20090405.html' title='20090405陽明山採海芋'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdsl6OPne_I/AAAAAAAAAR0/lFHhGg4XaU8/s72-c/P1000148.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-4367610283484130741</id><published>2009-04-05T22:19:00.000-07:00</published><updated>2009-04-06T02:25:32.822-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='聚餐'/><title type='text'>20090404的高中同學會</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdnKaffJa0I/AAAAAAAAAIM/YQhZQG24TsM/s1600-h/P1000103.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdnKaffJa0I/AAAAAAAAAIM/YQhZQG24TsM/s320/P1000103.JPG" alt="" id="BLOGGER_PHOTO_ID_5321506991192501058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnHWHwAecI/AAAAAAAAAIE/pYg6GeFsgss/s1600-h/P1000104.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnHWHwAecI/AAAAAAAAAIE/pYg6GeFsgss/s320/P1000104.JPG" alt="" id="BLOGGER_PHOTO_ID_5321503617566407106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdnG-eR8gkI/AAAAAAAAAH8/-PGKAGtLI-0/s1600-h/P1000105.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdnG-eR8gkI/AAAAAAAAAH8/-PGKAGtLI-0/s320/P1000105.JPG" alt="" id="BLOGGER_PHOTO_ID_5321503211297473090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnFCFqEjjI/AAAAAAAAAH0/2RYCTTKE11U/s1600-h/P1000106.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnFCFqEjjI/AAAAAAAAAH0/2RYCTTKE11U/s320/P1000106.JPG" alt="" id="BLOGGER_PHOTO_ID_5321501074383998514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnEp0nVeFI/AAAAAAAAAHs/ggeh0BamBG8/s1600-h/P1000107.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnEp0nVeFI/AAAAAAAAAHs/ggeh0BamBG8/s320/P1000107.JPG" alt="" id="BLOGGER_PHOTO_ID_5321500657492260946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnEKNSIkwI/AAAAAAAAAHk/Q9iMOrAAIxc/s1600-h/P1000108.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnEKNSIkwI/AAAAAAAAAHk/Q9iMOrAAIxc/s320/P1000108.JPG" alt="" id="BLOGGER_PHOTO_ID_5321500114358407938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdnDWVLUkWI/AAAAAAAAAHc/mT75dEoCwak/s1600-h/P1000109.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdnDWVLUkWI/AAAAAAAAAHc/mT75dEoCwak/s320/P1000109.JPG" alt="" id="BLOGGER_PHOTO_ID_5321499223124119906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdnCRTl-VHI/AAAAAAAAAHM/gD0f8Y6wLes/s1600-h/P1000113.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdnCRTl-VHI/AAAAAAAAAHM/gD0f8Y6wLes/s320/P1000113.JPG" alt="" id="BLOGGER_PHOTO_ID_5321498037288064114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnBimhCN3I/AAAAAAAAAHE/obs1swj8SDM/s1600-h/P1000114.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnBimhCN3I/AAAAAAAAAHE/obs1swj8SDM/s320/P1000114.JPG" alt="" id="BLOGGER_PHOTO_ID_5321497234913769330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdnBFphgI6I/AAAAAAAAAG8/00yK2_79obk/s1600-h/P1000115.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdnBFphgI6I/AAAAAAAAAG8/00yK2_79obk/s320/P1000115.JPG" alt="" id="BLOGGER_PHOTO_ID_5321496737504830370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnApdTD_vI/AAAAAAAAAG0/A7p3l1P2M3Q/s1600-h/P1000116.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdnApdTD_vI/AAAAAAAAAG0/A7p3l1P2M3Q/s320/P1000116.JPG" alt="" id="BLOGGER_PHOTO_ID_5321496253186703090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdnAPDB2FPI/AAAAAAAAAGs/vFM6-032zlA/s1600-h/P1000117.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdnAPDB2FPI/AAAAAAAAAGs/vFM6-032zlA/s320/P1000117.JPG" alt="" id="BLOGGER_PHOTO_ID_5321495799458567410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdm_yysnYII/AAAAAAAAAGk/Uye8sc_3LZE/s1600-h/P1000118.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdm_yysnYII/AAAAAAAAAGk/Uye8sc_3LZE/s320/P1000118.JPG" alt="" id="BLOGGER_PHOTO_ID_5321495314038218882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdm_ZE1gMTI/AAAAAAAAAGc/DZ26NVf7Dbc/s1600-h/P1000119.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdm_ZE1gMTI/AAAAAAAAAGc/DZ26NVf7Dbc/s320/P1000119.JPG" alt="" id="BLOGGER_PHOTO_ID_5321494872230736178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdm-xsXPwII/AAAAAAAAAGU/F8ezPnpr5bs/s1600-h/P1000120.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdm-xsXPwII/AAAAAAAAAGU/F8ezPnpr5bs/s320/P1000120.JPG" alt="" id="BLOGGER_PHOTO_ID_5321494195646480514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdm-QQ2c1UI/AAAAAAAAAGM/BuYKsSu3xuk/s1600-h/P1000122.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/Sdm-QQ2c1UI/AAAAAAAAAGM/BuYKsSu3xuk/s320/P1000122.JPG" alt="" id="BLOGGER_PHOTO_ID_5321493621325485378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdm955oDWeI/AAAAAAAAAGE/7gx_iWfpZFo/s1600-h/P1000123.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdm955oDWeI/AAAAAAAAAGE/7gx_iWfpZFo/s320/P1000123.JPG" alt="" id="BLOGGER_PHOTO_ID_5321493237133957602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdmsNMaZ60I/AAAAAAAAAF8/5CT8-ai3PmA/s1600-h/P1000124.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdmsNMaZ60I/AAAAAAAAAF8/5CT8-ai3PmA/s320/P1000124.JPG" alt="" id="BLOGGER_PHOTO_ID_5321473777385204546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdmqpcq9m5I/AAAAAAAAAF0/2IM7NZGk7E0/s1600-h/P1000125.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/Sdmqpcq9m5I/AAAAAAAAAF0/2IM7NZGk7E0/s320/P1000125.JPG" alt="" id="BLOGGER_PHOTO_ID_5321472063762701202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdmkuJdkJTI/AAAAAAAAAFs/xvw8R8AwO3U/s1600-h/P1000127.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdmkuJdkJTI/AAAAAAAAAFs/xvw8R8AwO3U/s320/P1000127.JPG" alt="" id="BLOGGER_PHOTO_ID_5321465547435812146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmkTXvmg_I/AAAAAAAAAFk/rRhUjSUtRes/s1600-h/P1000128.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmkTXvmg_I/AAAAAAAAAFk/rRhUjSUtRes/s320/P1000128.JPG" alt="" id="BLOGGER_PHOTO_ID_5321465087413093362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdmj4aLSzgI/AAAAAAAAAFc/hm1iEodYFy0/s1600-h/P1000129.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/Sdmj4aLSzgI/AAAAAAAAAFc/hm1iEodYFy0/s320/P1000129.JPG" alt="" id="BLOGGER_PHOTO_ID_5321464624209645058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdmi6tqSeQI/AAAAAAAAAFU/gonSVhNUNNA/s1600-h/P1000130.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/Sdmi6tqSeQI/AAAAAAAAAFU/gonSVhNUNNA/s320/P1000130.JPG" alt="" id="BLOGGER_PHOTO_ID_5321463564288030978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmicL_L27I/AAAAAAAAAFM/Y9PDtL_N9rE/s1600-h/P1000131.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmicL_L27I/AAAAAAAAAFM/Y9PDtL_N9rE/s320/P1000131.JPG" alt="" id="BLOGGER_PHOTO_ID_5321463039852796850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdmhN9tfKFI/AAAAAAAAAFE/KTXyb8ftXkg/s1600-h/P1000132.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdmhN9tfKFI/AAAAAAAAAFE/KTXyb8ftXkg/s320/P1000132.JPG" alt="" id="BLOGGER_PHOTO_ID_5321461695990671442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmcevIdqrI/AAAAAAAAAE8/8au4WANhogs/s1600-h/P1000133.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmcevIdqrI/AAAAAAAAAE8/8au4WANhogs/s320/P1000133.JPG" alt="" id="BLOGGER_PHOTO_ID_5321456486576925362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdmZSyPmJ-I/AAAAAAAAAE0/AMdVwavATYM/s1600-h/P1000135.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdmZSyPmJ-I/AAAAAAAAAE0/AMdVwavATYM/s320/P1000135.JPG" alt="" id="BLOGGER_PHOTO_ID_5321452982718834658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdmXzyptyVI/AAAAAAAAAEs/C1vGxtdb7Pg/s1600-h/P1000136.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdmXzyptyVI/AAAAAAAAAEs/C1vGxtdb7Pg/s320/P1000136.JPG" alt="" id="BLOGGER_PHOTO_ID_5321451350740814162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmW742cPtI/AAAAAAAAAEk/NRyx9XbY9Yc/s1600-h/P1000137.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmW742cPtI/AAAAAAAAAEk/NRyx9XbY9Yc/s320/P1000137.JPG" alt="" id="BLOGGER_PHOTO_ID_5321450390332128978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdmWRlq8fsI/AAAAAAAAAEc/eSLbCdXfX_8/s1600-h/P1000138.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdmWRlq8fsI/AAAAAAAAAEc/eSLbCdXfX_8/s320/P1000138.JPG" alt="" id="BLOGGER_PHOTO_ID_5321449663629131458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmVydZC2kI/AAAAAAAAAEU/gaUfTh3KIPs/s1600-h/P1000139.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmVydZC2kI/AAAAAAAAAEU/gaUfTh3KIPs/s320/P1000139.JPG" alt="" id="BLOGGER_PHOTO_ID_5321449128830622274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmUwxVkomI/AAAAAAAAAEM/2F5ChvDwbF8/s1600-h/P1000140.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmUwxVkomI/AAAAAAAAAEM/2F5ChvDwbF8/s320/P1000140.JPG" alt="" id="BLOGGER_PHOTO_ID_5321448000313401954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmUZT5mxiI/AAAAAAAAAEE/wqTq-bQelRA/s1600-h/P1000143.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdmUZT5mxiI/AAAAAAAAAEE/wqTq-bQelRA/s320/P1000143.JPG" alt="" id="BLOGGER_PHOTO_ID_5321447597274482210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdmTrtSonsI/AAAAAAAAAD8/1CZuQfS1CVI/s1600-h/P1000144.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdmTrtSonsI/AAAAAAAAAD8/1CZuQfS1CVI/s320/P1000144.JPG" alt="" id="BLOGGER_PHOTO_ID_5321446813816364738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdmTLXZ9YiI/AAAAAAAAAD0/qtUdfKUNXY0/s1600-h/P1000145.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdmTLXZ9YiI/AAAAAAAAAD0/qtUdfKUNXY0/s320/P1000145.JPG" alt="" id="BLOGGER_PHOTO_ID_5321446258185691682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdmSsu83IkI/AAAAAAAAADs/xLDblQm5xlc/s1600-h/P1000146.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdmSsu83IkI/AAAAAAAAADs/xLDblQm5xlc/s320/P1000146.JPG" alt="" id="BLOGGER_PHOTO_ID_5321445731930153538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdmSOAMIOJI/AAAAAAAAADk/ORUR8VhmkqU/s1600-h/P1000147.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdmSOAMIOJI/AAAAAAAAADk/ORUR8VhmkqU/s320/P1000147.JPG" alt="" id="BLOGGER_PHOTO_ID_5321445203981645970" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-4367610283484130741?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/4367610283484130741/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/20090404.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/4367610283484130741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/4367610283484130741'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/20090404.html' title='20090404的高中同學會'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__Eme0nfpM4Y/SdnKaffJa0I/AAAAAAAAAIM/YQhZQG24TsM/s72-c/P1000103.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-3140499862053758815</id><published>2009-04-01T23:33:00.001-07:00</published><updated>2009-04-01T23:53:52.511-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='聚餐'/><title type='text'>小紅帽跟Dan的離職歡送會</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdRfsefOAjI/AAAAAAAAADM/hXpNBmr2Ru8/s1600-h/L1000348.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 112px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdRfsefOAjI/AAAAAAAAADM/hXpNBmr2Ru8/s200/L1000348.JPG" alt="" id="BLOGGER_PHOTO_ID_5319982277534286386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;左起：YC, Jin, Ray, Jin的男友(不知道該怎麼稱呼), 要離職的小紅帽&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdRfTH7mFrI/AAAAAAAAADE/ctoqPbYijtg/s1600-h/L1000355.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 112px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdRfTH7mFrI/AAAAAAAAADE/ctoqPbYijtg/s200/L1000355.JPG" alt="" id="BLOGGER_PHOTO_ID_5319981841982559922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;我跟也是要離職的Dan Mass，他有個帥氣著中文名字:馬一丹～&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdRe9OAPL0I/AAAAAAAAAC8/BTwdRqZWM7c/s1600-h/L1000350.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 112px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdRe9OAPL0I/AAAAAAAAAC8/BTwdRqZWM7c/s200/L1000350.JPG" alt="" id="BLOGGER_PHOTO_ID_5319981465655521090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vic抓著嘴炮馬的頭，右邊是威廉&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdRelgj2p8I/AAAAAAAAAC0/JtlG9vmquLs/s1600-h/L1000347.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 112px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdRelgj2p8I/AAAAAAAAAC0/JtlG9vmquLs/s200/L1000347.JPG" alt="" id="BLOGGER_PHOTO_ID_5319981058319886274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;我跟前陣子出車禍的寒風～(好險只是皮外傷@@)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdReOsp-_cI/AAAAAAAAACs/YK2p33Tdx3s/s1600-h/L1000341.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 112px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdReOsp-_cI/AAAAAAAAACs/YK2p33Tdx3s/s200/L1000341.JPG" alt="" id="BLOGGER_PHOTO_ID_5319980666429832642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;nobirdm跟naomi姊姊&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdRdlNsGJwI/AAAAAAAAACk/5T2SqejjwTA/s1600-h/L1000339.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 112px; height: 200px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdRdlNsGJwI/AAAAAAAAACk/5T2SqejjwTA/s200/L1000339.JPG" alt="" id="BLOGGER_PHOTO_ID_5319979953742554882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;超能吃的人妻～阿滿姊，吃飯前她在轉魔術方塊，說沒轉好不給她吃飯&lt;br /&gt;不過她還是順利完成了　XD&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdRdA23xqYI/AAAAAAAAACc/4e5FEV7J-C8/s1600-h/L1000332.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 112px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdRdA23xqYI/AAAAAAAAACc/4e5FEV7J-C8/s200/L1000332.JPG" alt="" id="BLOGGER_PHOTO_ID_5319979329142237570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;我跟寒風還有YC的pose一致耶，改天來組團好了　XD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-3140499862053758815?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/3140499862053758815/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/04/dan.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/3140499862053758815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/3140499862053758815'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/04/dan.html' title='小紅帽跟Dan的離職歡送會'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__Eme0nfpM4Y/SdRfsefOAjI/AAAAAAAAADM/hXpNBmr2Ru8/s72-c/L1000348.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7537748518069296029.post-5025715543342705020</id><published>2009-03-29T03:42:00.000-07:00</published><updated>2010-10-28T18:53:12.068-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My RenderMan Tutorial'/><title type='text'>(1)Slim基本操作</title><content type='html'>最近心情有點小混亂～想說藉著整理一些RenderMan的心得，也好好整理自己的思緒囉～&lt;br /&gt;&lt;br /&gt;這篇主要是藉著在Slim使用Diffuse和Specular，來小小介紹一下RenderMan  Network的操作&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdLi6lTwWaI/AAAAAAAAACM/wM4MGLI1zXw/s1600-h/003.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 242px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdLi6lTwWaI/AAAAAAAAACM/wM4MGLI1zXw/s320/003.jpg" alt="" id="BLOGGER_PHOTO_ID_5319563605953239458" border="0" /&gt;&lt;/a&gt;◎這是從Maya的tool bar:RenderMan-&gt;Slim  開啟Slim的畫面，預設會有一個untitled的palette。&lt;br /&gt;中間的Graph Layout是就拉RenderMan Network的地方。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdLixj3vK0I/AAAAAAAAACE/cv-jqYdnanY/s1600-h/004.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 250px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdLixj3vK0I/AAAAAAAAACE/cv-jqYdnanY/s320/004.jpg" alt="" id="BLOGGER_PHOTO_ID_5319563450948463426" border="0" /&gt;&lt;/a&gt;◎一般標準的作法是：在Graph Layout裡，按滑鼠右鍵-&gt;Other-&gt;Archiver-&gt;Ensemble 新增一個Ensemble。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdLimq8JTII/AAAAAAAAAB8/Labed68GMWA/s1600-h/005.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 305px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdLimq8JTII/AAAAAAAAAB8/Labed68GMWA/s320/005.jpg" alt="" id="BLOGGER_PHOTO_ID_5319563263867440258" border="0" /&gt;&lt;/a&gt;◎可以從slim裏面看到Ensemble有許多的屬性；如Surface、Displacement...等。可想而知，Ensemble 就是把一堆屬性統整成一個shader的node。比較常用到的是Surface、Displacement和Light。(注意：Displacement不等於Bump)&lt;br /&gt;◎接著按下Surface旁的圖示-&gt;AdditiveFx-&gt;Delux。用Delux 的好處是，它可以將Diffuse、Specular、Incandescence(自發光)...等，整合起來。簡單來說～可以將Diffuse想成是物件的底色，而Specular是物件受光後，反射出的顏色。(細節還是要找一本computer graphic相關的書籍來play一下會比較了解)。除此之外，Delux還可以用來出AOV。&lt;br /&gt;◎在Displacement旁的圖示，照上面的方法，新增一個simple。(在這篇文裡，這只是新增好玩的，不會用到，想傳達的是～一般Displacement都是先接simple)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdLigTDkSYI/AAAAAAAAAB0/QE81urZXIu8/s1600-h/007.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 242px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdLigTDkSYI/AAAAAAAAAB0/QE81urZXIu8/s320/007.jpg" alt="" id="BLOGGER_PHOTO_ID_5319563154376903042" border="0" /&gt;&lt;/a&gt;◎然後新增Diffuse和Specular：一樣在Graph Layout裡按右鍵-&gt;Shading Components-&gt;Diffuse 來新增一個Diffuse的node。也是用同樣方法來加入一個Specular的node。&lt;br /&gt;◎在Delux裡，按下shading components旁的"+"號，來新增兩個shading components：v1和v2。預設是Diffuse。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdLiIRPB0KI/AAAAAAAAABc/0dB1YW3vQnQ/s1600-h/008.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 161px;" src="http://3.bp.blogspot.com/__Eme0nfpM4Y/SdLiIRPB0KI/AAAAAAAAABc/0dB1YW3vQnQ/s320/008.jpg" alt="" id="BLOGGER_PHOTO_ID_5319562741571244194" border="0" /&gt;&lt;/a&gt;◎然後，用滑鼠中鍵將Diffuse拖曳到Delux上(如上圖)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdLiB89ByTI/AAAAAAAAABU/8TS0ER47ziU/s1600-h/009.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 164px;" src="http://1.bp.blogspot.com/__Eme0nfpM4Y/SdLiB89ByTI/AAAAAAAAABU/8TS0ER47ziU/s320/009.jpg" alt="" id="BLOGGER_PHOTO_ID_5319562633047820594" border="0" /&gt;&lt;/a&gt;◎在彈出的選項中，選v1。(其實選v2也是一樣的，只是個人比較喜歡Diffuse的順序在Specular之前　XD)&lt;br /&gt;◎相同的方式，將Specular接到v2上。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdLh6ey6mUI/AAAAAAAAABM/5_MXYVTkEPM/s1600-h/010.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 298px; height: 320px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdLh6ey6mUI/AAAAAAAAABM/5_MXYVTkEPM/s320/010.jpg" alt="" id="BLOGGER_PHOTO_ID_5319562504693258562" border="0" /&gt;&lt;/a&gt;◎為了能明顯的觀察Diffuse以及Specular的作用，這裡是打算將兩者的color分別設成blue和red。&lt;br /&gt;◎在Diffuse裡，按下顏色的方塊，在彈出的視窗中，將顏色調成藍色。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdLhZnp3PqI/AAAAAAAAABE/yWj_WKNIfyM/s1600-h/011.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 313px; height: 320px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdLhZnp3PqI/AAAAAAAAABE/yWj_WKNIfyM/s320/011.jpg" alt="" id="BLOGGER_PHOTO_ID_5319561940135526050" border="0" /&gt;&lt;/a&gt;◎同樣的方法，將Specular的顏色設成紅色。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdLhRu554_I/AAAAAAAAAA8/O2ryO6v3OeY/s1600-h/012.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 207px;" src="http://4.bp.blogspot.com/__Eme0nfpM4Y/SdLhRu554_I/AAAAAAAAAA8/O2ryO6v3OeY/s320/012.jpg" alt="" id="BLOGGER_PHOTO_ID_5319561804642903026" border="0" /&gt;&lt;/a&gt;◎在場景中，隨便建一顆sphere，隨便打一個spot light。先select這顆sphere，再在Ensemble上按右鍵-&gt;Attach 將Ensemble這個shader配置到sphere上。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdLhGpvfKtI/AAAAAAAAAA0/_0vKs8jZ90w/s1600-h/013.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 273px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdLhGpvfKtI/AAAAAAAAAA0/_0vKs8jZ90w/s320/013.jpg" alt="" id="BLOGGER_PHOTO_ID_5319561614278470354" border="0" /&gt;&lt;/a&gt;◎在Maya的tool bar上：RenderMan-&gt;Render ，可得到下圖：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdLhBePE8GI/AAAAAAAAAAs/1mSl6GaxB_E/s1600-h/014.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 245px;" src="http://2.bp.blogspot.com/__Eme0nfpM4Y/SdLhBePE8GI/AAAAAAAAAAs/1mSl6GaxB_E/s320/014.jpg" alt="" id="BLOGGER_PHOTO_ID_5319561525290397794" border="0" /&gt;&lt;/a&gt;◎一顆藍色的球的反射光是紅色～Done!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#這是開始整理RenderMan的第1篇文～接下來會小小介紹什麼是RenderMan Interface Byte stream(*.rib)和shading language(*.sl)，以及如何在C++中使用RenderMan API來產生*.rib以及render#&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7537748518069296029-5025715543342705020?l=spintdt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spintdt.blogspot.com/feeds/5025715543342705020/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://spintdt.blogspot.com/2009/03/test.html#comment-form' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5025715543342705020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7537748518069296029/posts/default/5025715543342705020'/><link rel='alternate' type='text/html' href='http://spintdt.blogspot.com/2009/03/test.html' title='(1)Slim基本操作'/><author><name>Spin</name><uri>http://www.blogger.com/profile/12343501290029119019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/__Eme0nfpM4Y/Sn9y0VzEd0I/AAAAAAAAArw/gPxPNCnN1iM/S220/DSC00036.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__Eme0nfpM4Y/SdLi6lTwWaI/AAAAAAAAACM/wM4MGLI1zXw/s72-c/003.jpg' height='72' width='72'/><thr:total>4</thr:total></entry></feed>
