tag:blogger.com,1999:blog-46314335645435303602024-02-07T04:18:34.557-05:00Hydraulic DesignHDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comBlogger35125tag:blogger.com,1999:blog-4631433564543530360.post-24682380612663010162011-10-26T13:00:00.003-04:002011-10-26T13:02:48.319-04:00Time to get with the late 2000sFor the time being any new content for this page will be found <a href="http://www.facebook.com/pages/Hydraulic-Design/216745978392050">on Facebook</a>.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-91593476095907028772010-10-15T08:58:00.004-04:002010-10-15T09:26:59.240-04:00Non-Manifold Edges<div>There was a question on the Rhino group on LinkedIn about booleans failing due to "Non-Manifold" edges and just what that meant. There are two cases that fall under that heading, and in both cases if your model has them it means you've created a set of surfaces that could not in theory be turned into a real part(not by any conventional means like machining, rapid prototyping processes have their own rules.)</div><div><br /></div><div>The first case, I'll explain using the simple case of 2D lines. Imagine you've got two lines that form a 90 degree corner, and a third that bisects the angle, so you have three lines meeting at one point. Rhino doesn't let you "Join" those 3 curves into one.</div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW_luiLw-lgHM1xVmii143GgLf7q6TdtkWP-f-YEs3NJzVMKbnmTSI_uEP94-3Mc0fe7VCh8-lFlrMGZ-zi3pLXPUssnN_KNGhwBjjWMshpxdkv8u24YmcqoS84OYt7Fxz5AK1koUjFJSr/s1600/nonmanifold.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 246px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW_luiLw-lgHM1xVmii143GgLf7q6TdtkWP-f-YEs3NJzVMKbnmTSI_uEP94-3Mc0fe7VCh8-lFlrMGZ-zi3pLXPUssnN_KNGhwBjjWMshpxdkv8u24YmcqoS84OYt7Fxz5AK1koUjFJSr/s320/nonmanifold.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5528257581974479410" /></a><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW_luiLw-lgHM1xVmii143GgLf7q6TdtkWP-f-YEs3NJzVMKbnmTSI_uEP94-3Mc0fe7VCh8-lFlrMGZ-zi3pLXPUssnN_KNGhwBjjWMshpxdkv8u24YmcqoS84OYt7Fxz5AK1koUjFJSr/s1600/nonmanifold.jpg"></a><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW_luiLw-lgHM1xVmii143GgLf7q6TdtkWP-f-YEs3NJzVMKbnmTSI_uEP94-3Mc0fe7VCh8-lFlrMGZ-zi3pLXPUssnN_KNGhwBjjWMshpxdkv8u24YmcqoS84OYt7Fxz5AK1koUjFJSr/s1600/nonmanifold.jpg"></a><div style="text-align: center;"><br /></div></div>While such geometry is "illegal" for manufacturing purposes, it is actually not uncommon to to work with if you use FEA, so V5 has a tool called NonManifoldMerge that will let you create a polysurface like that pictured, it automatically splits and joins up all the edges of all the surfaces where they intersect.</div><div><br /></div><div>Now in the second case, imagine if you have something like a sphere with a smaller sphere completely inside it, not intersecting at all, and you try to "boolean" the smaller one from the bigger one, if it would let you do it that would also be a non-manifold shape.<br /></div>HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-71598556873047943362010-10-13T13:10:00.000-04:002010-10-13T13:11:46.772-04:00Recent Project<div style="text-align: center;"><br /></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhukIB4Fd_WjfZ4pO8otXGtCVHHlutC8kGuZOFvedJACOxEpki3QXcKIQuXAIJErnPpCgl2gFjfGW37ChKWOMaPwiym_1m5-KAWMowNG_NMoZdBjqedFvrXtw6p5qQZU2e6IdTFZT0vysRs/s1600/samplepanelsforweb.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 231px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhukIB4Fd_WjfZ4pO8otXGtCVHHlutC8kGuZOFvedJACOxEpki3QXcKIQuXAIJErnPpCgl2gFjfGW37ChKWOMaPwiym_1m5-KAWMowNG_NMoZdBjqedFvrXtw6p5qQZU2e6IdTFZT0vysRs/s400/samplepanelsforweb.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5527577154770409026" /></a><br />Automating the production of cutting patterns for hot-air balloons for <a href="http://www.sundanceballoons.com/">Sundance Balloons</a>. It involved figuring out how to apply the appropriate distortion so that the design looks correct when inflated; then scripting the detailing of the pattern pieces with seam allowance offsets, labels, alignment marks, and prepping for export to their cutting table software.<div><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7yyaQToC-kWF7ey52Jc2f0FilA7KUcq23BbuPZPqv54s-QVFAepgmgXQgCQh1Q_hUXHvhk5Im4-IQiLr4-bS8jkUD205IA3lYSZdwZOE0hKp6Bn4Ds7bwZ2b0XjTVnFD5M1Z3U760yzKs/s400/samplepanelsforweb2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5527578501505203218" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 231px; " /></div>HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-32578713317256792212010-07-28T13:08:00.002-04:002010-07-28T13:12:52.824-04:00Recent Project<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiLRiSDZ0uXIJcQfxdtho4MspB7GVsXbPeKb0EPFII1Am2d9ZjhicDRhOYFeD7ZpRC1g0GTij1sp3zaVyYReiW42_wUMSOPrJ7j1Vmq5qPzSt0M_qnblNcEYuhxQ8YLV98gOfjyEkB7H-y/s1600/Rear+Quarter+Air.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiLRiSDZ0uXIJcQfxdtho4MspB7GVsXbPeKb0EPFII1Am2d9ZjhicDRhOYFeD7ZpRC1g0GTij1sp3zaVyYReiW42_wUMSOPrJ7j1Vmq5qPzSt0M_qnblNcEYuhxQ8YLV98gOfjyEkB7H-y/s320/Rear+Quarter+Air.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5499006193191684338" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqDA8z2EzWEmrewqoDAomFx9fkqU6To7AmobAK05PJVpOr9TGUey7Ll-8sWeyBCSPRpWodvBqGvHRIppiRlQQHAT_5ZgBz8dRUazXzJEHQ_8HIPTZpEwXPPBBnUpmIawBPK2bUsMhio6Or/s1600/road+shot.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqDA8z2EzWEmrewqoDAomFx9fkqU6To7AmobAK05PJVpOr9TGUey7Ll-8sWeyBCSPRpWodvBqGvHRIppiRlQQHAT_5ZgBz8dRUazXzJEHQ_8HIPTZpEwXPPBBnUpmIawBPK2bUsMhio6Or/s320/road+shot.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5499006190880568802" /></a><br />Modeling and rendering for the "<a href="http://www.samsonmotorworks.com/switchblade.shtml">Switchblade</a>" flying motorcycle for Samson Motorworks.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-40478766964999147622010-02-14T12:36:00.002-05:002010-02-14T12:37:08.503-05:00Rhino Intro at Carleton U Industrial DesignOn the 25th of February I'll be showing Rhino to Industrial Design students at Carleton University.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-8653769252895864122010-01-29T15:35:00.001-05:002010-01-29T15:36:38.605-05:00Recent Project<a href="http://www.tozierltd.com/">Ascension carbon-fiber lounge chair, modeling and rendering.</a>HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-27319272199121355972009-10-25T21:57:00.002-04:002009-10-25T22:08:57.334-04:00T-Splines Vehiclular Design ChallengeIf you're a T-Splines user, check out their new <a href="http://www.tsplines.com/forum/viewtopic.php?f=9&t=29419">transportation modeling challenge</a>. I was honored to be picked to be a judge. Get your entries in by November 30th.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-81833600433546673032009-10-20T14:59:00.002-04:002009-10-20T15:06:08.606-04:00Carleton U Rhino WorkshopsStarting tomorrow I'm going to start a Rhino workshop at Carleton University Architecture, running 4 Wednesday mornings. Look up Randy Kerr if you're interested in signing up for possible future sessions.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-24106378079345605842009-06-04T11:34:00.010-04:002009-06-05T10:31:36.176-04:00Brazil Basics: the Matte material in studio shots<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdgUD5CzuCFnSOa-BNXeNeSBu1_FNTO7vb-KUIUoYOzCBXvLOdGmReb-ldX5oeRF2vajyPLQ-0YgI9OmwTjIiAZ4zHavni6SYIm7RYby3JNMobGZK2njBGZEk-HSN-IeknViz5Pd-FnmbN/s1600-h/duck+001.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 330px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdgUD5CzuCFnSOa-BNXeNeSBu1_FNTO7vb-KUIUoYOzCBXvLOdGmReb-ldX5oeRF2vajyPLQ-0YgI9OmwTjIiAZ4zHavni6SYIm7RYby3JNMobGZK2njBGZEk-HSN-IeknViz5Pd-FnmbN/s400/duck+001.jpg" alt="" id="BLOGGER_PHOTO_ID_5343835811123873090" border="0" /></a><br />My big issue as a rendering newbie when making studio-style shots was how to get a certain background gradient or solid colour quickly and independently of lighting the actual product.<br /><br />My <a href="http://hydraulicdesign.blogspot.com/2008/08/brazil-basics-reflection-control-and.html">previous Brazil tutorial</a> showed a method that works well when looking for a reflection in the 'floor' but was a little elaborate.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmXEpc8vIBHBQifhbBHjMDgUNvNex4tG1DMF9RhlPx3floEQYCY1AIizz77f7hV7DwpJLzIJxG8pFEgq1kfQ5oW5prxI-bw6gdPr2uZVUrrWr75s47gvrDBlZvOi2syJEbhzw9dPIfMSmY/s1600-h/duck+002.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 330px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmXEpc8vIBHBQifhbBHjMDgUNvNex4tG1DMF9RhlPx3floEQYCY1AIizz77f7hV7DwpJLzIJxG8pFEgq1kfQ5oW5prxI-bw6gdPr2uZVUrrWr75s47gvrDBlZvOi2syJEbhzw9dPIfMSmY/s400/duck+002.jpg" alt="" id="BLOGGER_PHOTO_ID_5343835812636317762" border="0" /></a>To start with this little duck, here's the simple gradient environment that I want to see. It's lit only with global illumination from the environment.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVA3FXx7flJMLcUB23EnrBMLDN0qbE2_IL9RPhNvWNWXsoJZMAb5WHo7k4kGQCB5i8HehrL74HF1WTR-6Ph29B-Tf5M7KZuCFUwBjxaopE4cB5YXhOmM4SGRz5qiNFraPAHU1v3qZumYCs/s1600-h/duck+003.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 330px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVA3FXx7flJMLcUB23EnrBMLDN0qbE2_IL9RPhNvWNWXsoJZMAb5WHo7k4kGQCB5i8HehrL74HF1WTR-6Ph29B-Tf5M7KZuCFUwBjxaopE4cB5YXhOmM4SGRz5qiNFraPAHU1v3qZumYCs/s400/duck+003.jpg" alt="" id="BLOGGER_PHOTO_ID_5343835813597263570" border="0" /></a>Here it is with a Global Illumination environment, one of the 'Studio' HDRIs included with Brazil.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyg-8eWcwGv2nWWYQmcNVEwlo7q_Lsr9WU6lLVoH3V4aNn3C0onw3aylfs0Bdwtw8BgXSoNPYIdDhF1v5XH9IAT83P41_9D1LLVfITcUPJfZmqJTRq7B-vcm6p-ZpiKk7qQjqbOnwdLdc9/s1600-h/duck+004.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 330px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyg-8eWcwGv2nWWYQmcNVEwlo7q_Lsr9WU6lLVoH3V4aNn3C0onw3aylfs0Bdwtw8BgXSoNPYIdDhF1v5XH9IAT83P41_9D1LLVfITcUPJfZmqJTRq7B-vcm6p-ZpiKk7qQjqbOnwdLdc9/s400/duck+004.jpg" alt="" id="BLOGGER_PHOTO_ID_5343835813451733170" border="0" /></a>Now the gradient background is what you see, but the GI environment is providing the lighting and reflections. There is more than one way to do such 'overriding,' but in this case I combined them using a Composite Environment. The GI environment was simply plugged into the first slot and the gradient into the second.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDkyTw1X0YNZ9UJcgnFLcw_A_6Y6Y2Zr9ODzyHehlMKWg3hC4EyRnFB6F8YDLS_g40pqJTj1zN-XXkQlLbpysaBBh8L2lDawL2cFP24mE34lgLmD2Lk-Z38JXUUK4lMuM4KwGKcHBUHXrJ/s1600-h/duck+005.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 330px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDkyTw1X0YNZ9UJcgnFLcw_A_6Y6Y2Zr9ODzyHehlMKWg3hC4EyRnFB6F8YDLS_g40pqJTj1zN-XXkQlLbpysaBBh8L2lDawL2cFP24mE34lgLmD2Lk-Z38JXUUK4lMuM4KwGKcHBUHXrJ/s400/duck+005.jpg" alt="" id="BLOGGER_PHOTO_ID_5343835820653689282" border="0" /></a><br />So that the duck doesn't appear to be floating in space, I add a plane.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9_Ua8L7GchqGwL1XYQDOt4Mft1ZXpuIuBB5YV3HNIR26SKbV-BdZTcWfg_qtv_JGlzF84RlCBdL_wYmFB-Nxz6-d_GT8MveBKO7YtEw-kQTclm1O2EZvJNBJLAnlODSgU9oN-5uGfhaFv/s1600-h/duck+006.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 330px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9_Ua8L7GchqGwL1XYQDOt4Mft1ZXpuIuBB5YV3HNIR26SKbV-BdZTcWfg_qtv_JGlzF84RlCBdL_wYmFB-Nxz6-d_GT8MveBKO7YtEw-kQTclm1O2EZvJNBJLAnlODSgU9oN-5uGfhaFv/s400/duck+006.jpg" alt="" id="BLOGGER_PHOTO_ID_5343836954569709218" border="0" /></a><br />And finally, the plane is assigned a Matte material. It makes the surface 'invisible' but it still receives shadows (and/or reflections,) and those shadows make the duck appear to actually be sitting on the background.<br /><br /><a href="http://www.hydraulicdesign.net/#store">Buy Brazil here.</a>HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-29978786063061948032009-05-30T09:26:00.001-04:002009-05-30T09:41:12.486-04:00Looking for a few Rhino instructorsI'm trying to develop a formal unofficial "Level III" 3-day modeling course using my material, and I'm looking for a few experienced Rhino instructors to give their opinion on it.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-62181988570761447382009-05-17T21:00:00.003-04:002009-05-23T11:12:02.827-04:00Rhino View BasicsThere's been an issue come up from time to time on the newsgroup with apparent confusion over how the standard viewport views in Rhino work, that the Right or Left views seem to show the "wrong" side.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh2F5iUeckxQNSvCbCK67ZrSomoiLDwmiSXX_3VoWTdUPvMSpCTKsjlciclpCYuiaearK0rhI1Hld6ZpDuUk00nYW4KjzftjYy12VyfAaZ3wCiFvBcdpRqlg-MxCZA5e0_P7H1IVYE-y_e/s1600-h/standardviews.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 252px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh2F5iUeckxQNSvCbCK67ZrSomoiLDwmiSXX_3VoWTdUPvMSpCTKsjlciclpCYuiaearK0rhI1Hld6ZpDuUk00nYW4KjzftjYy12VyfAaZ3wCiFvBcdpRqlg-MxCZA5e0_P7H1IVYE-y_e/s400/standardviews.jpg" alt="" id="BLOGGER_PHOTO_ID_5336917698181170258" border="0" /></a>The above illustrates how Rhino defines the standard view directions, and is familiar to anyone who's had to take a drafting class. If your first introduction to "drafting" is Rhino, then perhaps some explanation is in order.<br /><br />The confusion comes from the fact that with something like a car or a plane, the "Left" view shows what is commonly referred to as the "Right" side, it's referenced from the point of view of someone sitting in it. That's not how Rhino works, to put it most simply it's using more general-purpose principles.<br /><br />You can always make up your own views that show you the projection you want with the label you want, but this is indeed the view convention used by all CAD users in all fields. I did not get different instructions on how to make drawings from the one car designer in the faculty of my Industrial Design school, or my introductory Architecture course, or my Engineering drafting class.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-53466906979373109302009-01-28T17:23:00.004-05:002009-01-28T17:43:58.977-05:00Online Rhino ClassesA few years ago I taught online Rhino training classes for an American reseller(who sadly passed away and no one was able to keep his business going,) and have decided to offer them again directly myself.<br /><br />I'm offering the 'standard' Level I and II Rhino training based on McNeel's curriculum, as well as a "Level III" based on my own material. The classes will typically run 3 weeks, with weekly online 'lectures' via GoToMeeting or any other convenient online communication method. Not only do you save on travel but the cost is lower still than a regular class since I don't need to provide a classroom. <a href="http://www.hydraulicdesign.net/#training">Read more here.</a>HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-21018480172463744382009-01-27T17:56:00.008-05:002011-05-26T09:01:30.402-04:00Now with newfangled moving picturesI've just released a new version of my Advanced Rhino Training CD with added video. There's about an hour of it, over three dozen clips. It doesn't replace the text but compliments it. I'm trying to find the best way to post samples online and if I try YouTube it seems like it randomly does or doesn't enable high-quality video, so apologies if this is a tiny blurry mess. If you'd like to see what the videos actually look like, <a href="https://www.yousendit.com/transfer.php?action=batch_download&batch_id=VnBvck82V3JuSlJjR0E9PQ">you can download this 116MB self-executing demo with over 100 pages of content.</a><br /><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/rgkyy2HiQ0Y&hl=en&fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/rgkyy2HiQ0Y&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-49548574929924336402008-12-22T22:00:00.006-05:002008-12-22T22:08:32.661-05:00Recent Project<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHQa8xKtBJcIs8m-APFxigPojzhHHmdFbuRiFif8mWDElB3GoxE3k3I-GvaFPiSLSNZXomZAqh21M6iNEEEk4HKRMdwfsk_XrJJNnWdcXwbTlJgRgJUBcu0NOfwU75HrD5vjRPjz8Pz-e1/s1600-h/csc-house.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHQa8xKtBJcIs8m-APFxigPojzhHHmdFbuRiFif8mWDElB3GoxE3k3I-GvaFPiSLSNZXomZAqh21M6iNEEEk4HKRMdwfsk_XrJJNnWdcXwbTlJgRgJUBcu0NOfwU75HrD5vjRPjz8Pz-e1/s320/csc-house.jpg" alt="" id="BLOGGER_PHOTO_ID_5282816837814932930" border="0" /></a><br />I did a few renderings of architectural and product design projects for Hawaii-based <a href="http://www.globallivingsystems.com/">Global Living Systems</a>. Design & modeling by Patrick Tozier and Hemasaila Rajan.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-79923451980666318582008-11-17T08:57:00.007-05:002008-11-18T06:41:43.319-05:00Rhinoscript Classes IntroductionHere's a simple example showing the use of VBScript's classes in a Rhino script. It assumes some knowledge of the basics of scripting. VBScript's classes offer a very primitive form of object-oriented programming, but it is enough to be helpful in organizing your scripts.<br /><br />Why and when should you use classes? I'm not going to give you the theories you can read elsewhere about "abstraction" and the like, I'll say that it's fine, probably best to stick with basic functions and procedures when you're hacking out basic functionality, but once you get to a stage where you're struggling over what variables to make global and which to keep passing as arguments back and forth among several functions, it's time to think about packaging things up in objects. It's not necessarily going to make your code smaller, but it will make it a lot easier to manage, if you do it right(a bit of a caveat there, yes,)you'll smoothly construct really complex functionality from simple, robust components.<br /><br />When you're making an "object" what you're making is your own custom type of variable, made up one or more of the basic variable types(integers, strings, etc.)or other objects. In this example, I've made a simple "Cylinder" object.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSRGG5BDVvk4wEikeLuDp2gM_qlheeR4-0Zl1Yd8zIPFmfeMmeTOQAY2ZDXGuz1DjEJfe7m6MseFkmtFThZmc53m5PS1cXvx-dC0UYWO5rdjWfCDA_QggwFXKDq_o0REadKRc3U2u7Wwud/s1600-h/cylinder+1.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSRGG5BDVvk4wEikeLuDp2gM_qlheeR4-0Zl1Yd8zIPFmfeMmeTOQAY2ZDXGuz1DjEJfe7m6MseFkmtFThZmc53m5PS1cXvx-dC0UYWO5rdjWfCDA_QggwFXKDq_o0REadKRc3U2u7Wwud/s320/cylinder+1.png" alt="" id="BLOGGER_PHOTO_ID_5269679623989006578" border="0" /></a><a href="http://www.hydraulicdesign.net/downloads/class_sample.rvb">Download and load this rvb file</a> into Rhino. As soon as you do that, a cylinder will appear. That's thanks to this code down on line 63, after defining the Cylinder Class:<br /><blockquote>Dim objPersistentCylinder<br />'create the cylinder object on loading the script file<br />Set objPersistentCylinder=New Cylinder<br />objPersistentCylinder.Height=10 </blockquote>Looks pretty clear, doesn't? We've made a new Cylinder, without having to worry about how, and set it's Height to 10. Much more elegant than without classes, if you wanted to keep track of these things you'd have to store the required parameters to build the cylinder and the identifying string for the solid as separate variables and pass them to a "ModifyCylinder" function. Then if you wanted to build an array of cylinders...ugh!<br /><blockquote></blockquote>Now run the RunScript command in Rhino. You'll be given two subroutines to choose from, <span style="font-weight: bold;">MakeTemporaryCylinder</span> and <span style="font-weight: bold;">ChangePersistentCylinder.</span><br /><blockquote>Line 68<br />Sub MakeTemporaryCylinder()<br />Dim objMyCylinder<br />Set objMyCylinder=New Cylinder<br />objMyCylinder.Radius=3<br />objMyCylinder.Pick<br />'pause for user input, just to show it exists<br />Dim strInput<br />strInput=Rhino.GetString("The volume of this cylinder is " & objMyCylinder.Volume &". Press any key to continue...")<br />'after this sub exists, the object ceases to exist and the cylinder is deleted as per Class_Terminate()<br />End Sub</blockquote><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALWVHG-y3R2qO7GMLnMUswKX6Ow6CERsjWd8TxqsORW50wLQmSe0TVy2NTOzWaeyXdoeZ6yYhI1LtuVyAZUn_dX0Oac34-mDoGS4NN0lba7Z5UHAJPK403b4E23eQGr5nEX83Nvstif2Y/s1600-h/cylinder+2.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjALWVHG-y3R2qO7GMLnMUswKX6Ow6CERsjWd8TxqsORW50wLQmSe0TVy2NTOzWaeyXdoeZ6yYhI1LtuVyAZUn_dX0Oac34-mDoGS4NN0lba7Z5UHAJPK403b4E23eQGr5nEX83Nvstif2Y/s320/cylinder+2.png" alt="" id="BLOGGER_PHOTO_ID_5269679952528135682" border="0" /></a>This illustrates how objects have "scope" just like normal variables. The objMyCylinder variable was declared inside the function, so as soon as you press any key at the prompt, the object ceases to exist. In the class definition there's a special subroutine called Class_Terminate() you can use to execute any cleanup code you like at that time, like in this case deleting the actual solid.<br /><br />You'll also notice the Pick method I added to highlight the cylinder, it's on line 57:<br /><blockquote> Public Sub Pick()<br />Rhino.SelectObject int_strSolid<br />End Sub</blockquote>Functions, Subs, and variables can be defined as Public or Private. Pick is Public, so that the rest of the program can call it, but int_strSolid, the GUID of the cylinder solid itself, is one of the Private properties.<br /><br />Now I could have made the GUID of the solid Public and used it to call Rhino.SelectObject outside the class, but the idea of classes--of course there have been books and books written about this stuff, pay little attention to my limited experience!--is that you want to keep as much private as possible so that you can change how things work inside the class without breaking the code that actually uses it.<br /><br />There's also the problem that if the property is public, then any other code can modify it willy-nilly, which may or may not be a good idea. In this case it is probably a bad idea, if the GUID of the cylinder changes, what happened to the old one? Was it deleted or is it still hanging around? It's sort of the "responsibility" of the Cylinder class to keep track of it, so it needs to control it.<br /><br />Now there is a way around it, if some outside functions did need the GUID but we didn't want it to be changeable. Notice how the volume of the cylinder is added to the command line prompt, and on line 42, how that property is called inside the class:<br /><blockquote> Public Property Get Volume<br />'Retrieve the volume of the cylinder<br />Volume=Rhino.SurfaceVolume(int_strSolid)(0)<br />End Property</blockquote>So, we could make a Property Get for the GUID like this:<br /><blockquote>Public Property Get GUID<br />GUID=int_strSolid<br />End property<br /></blockquote><br />This gives the same result as if we returned a value from a function:<br /><blockquote>Public Function GetGUID()<br />GetGUID=int_strSolid<br />End Function<br /></blockquote>The difference is that as far as the calling code is concerned, "GUID" is just a property like any other rather than the result of a function. So both more elegant, isolating the logic of what you want to do with your object from the nasty dirty business of making it work, plus it means that if at some stage your GUID was a simple public property, and you decided to do something more complex with it, then that change would be transparent to the rest of your code.<br /><br />Moving on to the<span style="font-weight: bold;"> </span><span><span style="font-weight: bold;">ChangePersistentCylinder</span> subroutine on line 79.</span><span style="font-weight: bold;"><br /></span><blockquote>Sub ChangePersistentCylinder()<br />'randomly change radius and height<br />Randomize<br />Dim dblRadius,dblHeight<br />dblRadius=1+Rnd*7<br />dblHeight=5+Rnd*10<br />objPersistentCylinder.Radius=dblRadius<br />objPersistentCylinder.Height=dblHeight<br />End Sub</blockquote>This function randomly modifies the radius and height of the cylinder, automatically redrawing. The last chunk of code made use of Public Property Get, this makes use of Public Property Let, and shows why you would use it.<br /><br />Setting the Radius of the cylinder calls this code on line 36:<br /><blockquote> Public Property Let Radius(dblRadius)<br />'Set the radius<br />int_dblRadius=dblRadius<br />Redraw<br />End Property</blockquote>The Property Let stores the entered radius in the internal radius variable, so that it can't get changed unexpectedly by outside code, and calls a Redraw function that deletes the cylinder and rebuilds it with the new dimensions.<br /><br />There's a whole lot more to object-oriented programming, but this pretty much covers the features of VBScript classes. The only major feature I neglected is Property Set, which is just like Property Let except it takes an object as a parameter instead of a regular variable.<br /><br />You can go crazy with arrays of objects and objects inside objects, and there are some details about using them that may trip you up, but these mechanisms are your building blocks.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-14654178501432223832008-11-16T17:24:00.000-05:002008-11-16T16:51:15.411-05:00Recent Scripting Project<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjueMDiAvk1oToBCAKoDt_eGiO3ODxCcInFB1Va4ZunOzuaFenLXlGlfw7OPzK1TtTv6ek473h4QkYCqIsNQGNkhQUFBYvNaJpueIwUEqX0_CE4UQMyjHLrRIsnH49gjUZAWkdYuJmzf8Fy/s1600-h/fixture+1.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 261px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjueMDiAvk1oToBCAKoDt_eGiO3ODxCcInFB1Va4ZunOzuaFenLXlGlfw7OPzK1TtTv6ek473h4QkYCqIsNQGNkhQUFBYvNaJpueIwUEqX0_CE4UQMyjHLrRIsnH49gjUZAWkdYuJmzf8Fy/s320/fixture+1.jpg" alt="" id="BLOGGER_PHOTO_ID_5269374840081625570" border="0" /></a><br /><br />I've been working with <a href="http://www.tgifinc.com/">Tube Guage Inspection Fixtures, Inc.</a> on some scripting to assist with the Rhino design of their inspection fixtures, sets of wood or metal forms used for checking tolerances on piping, usually used in the automotive industry. A simple enough concept, a perfect situation for scripting automation, but there were enough details to handle that it was still about 130Kb of script.<br /><br />The script works from a user-defined centerline and chosen dimensions to make a set of blocks under the straight sections of the pipe. It automatically adds clearances for tube bends, applies specific profiles to the end blocks, and formats 2D output with particular tool path requirements. It wasn't considered a good use of time to try to automatically adapt to all possible details, since they can vary quite a lot and these are made working from often dubious imported geometry, so I simply made it as simple as possible to make modifications.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9uz4Qd8x8SgF4X1kWIJUUhKCyFiRXOo2GkFtSCPHjPAc5LiRfAsmbZ0C-CUjsHSLwibDXpXW7ugxmclzjw5wzQs79aot-sMmMVF7vyEaenJVNSPNMBTz6TX3q0p6RlegOjrfHGhV9NqpM/s1600-h/fixture+2.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 261px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9uz4Qd8x8SgF4X1kWIJUUhKCyFiRXOo2GkFtSCPHjPAc5LiRfAsmbZ0C-CUjsHSLwibDXpXW7ugxmclzjw5wzQs79aot-sMmMVF7vyEaenJVNSPNMBTz6TX3q0p6RlegOjrfHGhV9NqpM/s320/fixture+2.jpg" alt="" id="BLOGGER_PHOTO_ID_5269374837487079106" border="0" /></a>HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-66489512908733385792008-10-31T13:51:00.002-04:002008-10-31T14:30:43.306-04:00PC game review: GridI’m a bit behind the gaming times. I don't have a video game system and just recently finally grew weary of shooting down police helicopters in San Andreas and had a hankering for a more serious driving game. Because it was available on Valve’s Steam service and decently reviewed, I opted for Grid from Codemasters.<br /><br />Grid is marketed as being focused on driving. That’s code for not being able to tweak your car. That’s okay, it means that learning to win is a matter of driving, not manipulating a spreadsheet, though some would probably wish for more cars than the included 45, which isn’t that many when they’re spread out over disciplines ranging from Le Mans prototypes to drifting. However they do all handle distinctly while being “balanced” so that cars in the same class are more or less competitive, which is not realistic but does mean you might actually drive more than a handful of them regularly.<br /><br />The other task is managing your team in the career mode, which consists of hiring and firing a teammate and juggling sponsors. Once a “year,” you get the option to run the 24 Hours of Le Mans, and it is appropriately gruelling, even if actually only 12 minutes.<br /><br />The graphics are about as good as you can get without the hardware requirements of a Crysis. Cars—up to 20 per race--and hospitality tents literally glimmer in the sunlight. Bugs and tar accumulate on your bumper. The 3D spectators react if you crash into the wall in front of them. The cars have probably been made unrealistically durable to better show off the damage modeling that runs the gamut from scratches to missing body panels and crumpled suspension.<br /><br />I can’t say how accurate the reproduction of the gear whine from a Koenigsegg CCX is, but pieces of bodywork that get knocked off cars will stay on the track, and if you run into them they might stick to your car and you’ll hear them flapping around. That’s adequate for me to rate the sound effects “excellent.”<br /><br />The rest of the audio is my one big disappointment in the presentation, especially after spending a month or four on GTA. That may not be fair, but when the game yaps at you, giving you such useful information as explaining how fourth place is one step from the podium, I must assume the goal of such chatter must be to create atmosphere just like the radio stations in San Andreas. There is nothing close to what’s needed in the quantity or quality of quips from your crew chief, teammate, and business manager for them to do anything but get on your nerves.<br /><br />As you’ve probably already gathered, Grid is not a hardcore simulation. It’s realistic enough that taking a high-speed turn in a new Dodge Challenger at about 130mph, going wide and having the wheels bite the gravel in a slight depression at just the right angle, will result in rolling eight times, losing a door and the windshield, shattering the mirrors, and caving the roof...but it’s still 100% drivable. If you do manage to bend a wheel into the passenger seat, you get a second chance with the Flashback feature, which lets you rewind the last few moments and restart from any point. If you turn off the electronic nannies there is a general air of realism, but the cars do accelerate and brake too fast, which I would extrapolate helps it tend towards a driving style a bit too much like off-road rallying(which makes sense considering <a href="http://en.wikipedia.org/wiki/Dirt_%28video_game%29">where the physics engine originated</a>.)<br /><br />It’s definitely fun, though, and definitely challenging. It can be tricky to simply get the faster prototypes around a track without hitting anything and you can dial the AI’s skill level up to 11. Enter a race that you’re not quite ready for and the AI will quite deliberately push you out of its way. There are some real tracks and some fantasy settings, unless there really is a street course in Milan that goes through a cathedral.<br /><br />Because I’m afraid of never getting any work done again I haven’t tried online multiplayer, though skimming user forums shows some concern about races turning into demolition derbies. The online feature I have used is the “test drive” mode where you can race against a “ghost” of your personal best time or the "world record," though there seem to be some glitches or cheating since the world record for most tracks is something less than one second.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-89609035061849947222008-09-03T21:05:00.003-04:002008-09-09T07:27:56.230-04:00Google ChromeIt looks like my <a href="http://www.hydraulicdesign.net/#store">order form</a> has some trouble with the new browser. I don't know if it's my code or the Mootools library, it's probably early days to try much troubleshooting anyway.<div>UPDATE: It's working okay now, except that the product titles are overlapping the quantity input boxes.</div>HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-58465247330284003122008-08-05T18:30:00.004-04:002009-06-05T10:19:17.768-04:00Brazil Basics: Reflection Control and the Brazil Utility MaterialHere's a little example showing the practical use of a few of Brazil's many, many settings.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcg1lIT19o1xHB28dnTAoCkykoG6eND6XAqRRw0yXdLZL7abp_8LlFocsREroh4s6v7iMRU2poccbPK-mH5rhsfTBVwNT8OCfPK5xATKOhLxYFN-TKIyBP963AXTI0gJyCvOBlUGYTY9Ly/s1600-h/01-original.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcg1lIT19o1xHB28dnTAoCkykoG6eND6XAqRRw0yXdLZL7abp_8LlFocsREroh4s6v7iMRU2poccbPK-mH5rhsfTBVwNT8OCfPK5xATKOhLxYFN-TKIyBP963AXTI0gJyCvOBlUGYTY9Ly/s320/01-original.jpg" alt="" id="BLOGGER_PHOTO_ID_5231518089712504370" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzy1-vHJm216muacZBXKIWMs0f7IvLfcxpAWTxYJhNoC26WfUrn5-vvUE32dOwZai-NVMbWyI_lJrzU1c4pV_4NILn6rWRwWpnw6u_ocT9rI3L5Lv-huO9-7WhYU231hyCswFyKW3-jaL5/s1600-h/scene-setup.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzy1-vHJm216muacZBXKIWMs0f7IvLfcxpAWTxYJhNoC26WfUrn5-vvUE32dOwZai-NVMbWyI_lJrzU1c4pV_4NILn6rWRwWpnw6u_ocT9rI3L5Lv-huO9-7WhYU231hyCswFyKW3-jaL5/s320/scene-setup.jpg" alt="" id="BLOGGER_PHOTO_ID_5231518280286777842" border="0" /></a><br />I've been doing simple studio-type renderings like this of concepts for a client. Not concepts of sinks, but it will do. It's lit using the skylight and a single bright panel, with Global Illumination enabled but with just a couple bounces. The background is a gradient, but this would all work the same if I was using an HDR environment or whatever. The colors are intentionally 'odd' to highlight what's going on.<br />So what we have is the object on a plain, partially-reflective background. I used the Reflection Decay option under the Reflection Parameters on the floor to fade out the reflected sink. The floor is a Brazil Plane Primitive, set (not in the lower shot of course) as infinite.<br />So assuming this looks okay, the problem is that I want a pure white background.<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjARF73e5TWyw2hLDT5irYmh6jTlrDfgu4AsEJho0LJkPt4nOr6aiwBq-HFK4AdurqVBD3keyfsHOUHoWx9ZPwQVnKpdrNQ9Vj-MpKu_hoo-3J34Ty4JqwDXWoHIwlJur-hbcNc3AcD_SGP/s1600-h/02-bright-white-floor.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjARF73e5TWyw2hLDT5irYmh6jTlrDfgu4AsEJho0LJkPt4nOr6aiwBq-HFK4AdurqVBD3keyfsHOUHoWx9ZPwQVnKpdrNQ9Vj-MpKu_hoo-3J34Ty4JqwDXWoHIwlJur-hbcNc3AcD_SGP/s320/02-bright-white-floor.jpg" alt="" id="BLOGGER_PHOTO_ID_5231518272946656594" border="0" /></a><br />To force the floor to be pure white, I did two things:<br /><ul><li>In the reflection parameters of the floor material, went to the Basic Reflection Control and checked the box labeled "Env:" This lets you set a different color or material for the environment the object is reflecting. I set the color to white.<br /></li><li>Increased the Diffuse multiplier in the default material settings. The problem of course is that the shadow and reflection are 'blown out,' and it's lighting up the sink, which might be perfectly realistic, but this is not exactly about "realism."<br /></li></ul><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz6pr7sagM_f_COTDi8TRRxiFuw9AZSsed7K01j5KaYL-KNewB8hz3Epu13vfs3xBsCac9N_8Eiaps4NpAHubsK2DOPRBH1s3fSgs2tjw2ajK41bYMMJ7nbposya-8rIZWMNGewjxX6Eyx/s1600-h/03-gi-adjusted.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz6pr7sagM_f_COTDi8TRRxiFuw9AZSsed7K01j5KaYL-KNewB8hz3Epu13vfs3xBsCac9N_8Eiaps4NpAHubsK2DOPRBH1s3fSgs2tjw2ajK41bYMMJ7nbposya-8rIZWMNGewjxX6Eyx/s320/03-gi-adjusted.jpg" alt="" id="BLOGGER_PHOTO_ID_5231518275461905762" border="0" /></a>This is where the Brazil Utility Material comes in. If we place the floor material inside a Brazil Utility Material, we can tweak, among many other things, the amount of lighting it emits and receives from global illumination. To do this, I created a Utility Material and assigned it to the floor object, then inserted the old floor material into the Base slot of the Basic material overrides section. I then scrolled down to the Global Illumination Parameters and reduced the Level and Saturation values for generating and receiving GI.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIyATpbgcuQtJ9neeSSIDFWb3Uv-vJH_UKYlEbNHsZmnfoxh3WnZP8qOvrBsGMO7peK9K2Q23d0MTK0GnZnAZIrIlAhlCXXnMRpLaIxKSl5UzPUxk98tO2PMxxCeYwWYkE4V7mFooPH7BH/s1600-h/04-reflection-replaced.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIyATpbgcuQtJ9neeSSIDFWb3Uv-vJH_UKYlEbNHsZmnfoxh3WnZP8qOvrBsGMO7peK9K2Q23d0MTK0GnZnAZIrIlAhlCXXnMRpLaIxKSl5UzPUxk98tO2PMxxCeYwWYkE4V7mFooPH7BH/s320/04-reflection-replaced.jpg" alt="" id="BLOGGER_PHOTO_ID_5231518277548691170" border="0" /></a><br />To completely remove the reflection of the pure white floor from the sink(which is not very realistic of course, but just to illustrate what you can do,) I went back to the Basic Material Overrides and inserted into the Reflected slot a copy of the original floor material, minus the adjustments.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAEy3oD4BvLwpM7vBTNomvcoD_PpGMW2o2M-EtjiJvoLwfZW2E2PaDamKhfUu6RoP9kG1Ig4aP-sMJObsrJXQ2MfntQ90t4WHR3UbLFalbCMoCiQ_fX3zAJz_oxcxWwY2kPyrdI437lBrt/s1600-h/05-planar-background-override.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAEy3oD4BvLwpM7vBTNomvcoD_PpGMW2o2M-EtjiJvoLwfZW2E2PaDamKhfUu6RoP9kG1Ig4aP-sMJObsrJXQ2MfntQ90t4WHR3UbLFalbCMoCiQ_fX3zAJz_oxcxWwY2kPyrdI437lBrt/s320/05-planar-background-override.jpg" alt="" id="BLOGGER_PHOTO_ID_5231518274988600722" border="0" /></a><br />Finally, to make the 'sky' pure white(with quicker render time than making the ground plane infinite again)I made a Single Color Texture and set it to white. I opened up the Environment section of the main Brazil settings panel, and inserted the texture into the Planar background slot of the Global Maps overrides. You can see it has no effect on the environment reflected on the object.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlgtjl9uCtorPUCVhLe4_CNplY5iHPNY_JxeRznOL-zFlJEwB7LzQz-SF9xaAjMgfpF2UgPf0IosVKDptZSWdQqD5_xcKwMC8Zm3gdXMCj-AcvDpqtSa2gO0ifm_Uq-_Y2Bq0gWuRC18tK/s1600-h/07-glass-wback.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlgtjl9uCtorPUCVhLe4_CNplY5iHPNY_JxeRznOL-zFlJEwB7LzQz-SF9xaAjMgfpF2UgPf0IosVKDptZSWdQqD5_xcKwMC8Zm3gdXMCj-AcvDpqtSa2gO0ifm_Uq-_Y2Bq0gWuRC18tK/s320/07-glass-wback.jpg" alt="" id="BLOGGER_PHOTO_ID_5234581364868729314" border="0" /></a>Here I switched the sink to a glass material and adjusted the ground plane to show the effect of the planar background setting.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCHGBR6XPBiCH3ja-N0CavFnJj2AY9p0UUYAEeLpRQkfyKUfQTqkEurLB4hpcNpp7-0LX03a0P8IrgSe3qF0LL9wXj-pQWwWg6TR458Q5abQPYXENkPE7tHQDotvPhq0H71MIvq7tsPhyphenhyphenJ/s1600-h/06-glass.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCHGBR6XPBiCH3ja-N0CavFnJj2AY9p0UUYAEeLpRQkfyKUfQTqkEurLB4hpcNpp7-0LX03a0P8IrgSe3qF0LL9wXj-pQWwWg6TR458Q5abQPYXENkPE7tHQDotvPhq0H71MIvq7tsPhyphenhyphenJ/s320/06-glass.jpg" alt="" id="BLOGGER_PHOTO_ID_5234581368348963138" border="0" /></a>With the planar background override turned on, you can see it has no effect on what's refracted or refracted in the glasss.<br />I posted a question about this on t<a href="http://brazil.mcneel.com/forums/5.aspx">he Brazil support forum</a>, thanks to <a href="http://homepage.mac.com/sherstobitoff/Menu10.html">Paul Sherstobitoff</a>.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-49870972081174730622008-07-28T12:39:00.003-04:002008-07-28T12:43:28.758-04:00Simulation of a Prototype Part II<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix0wFNMGP3Mi0nmBDkPg-4-uM-iLSuUz4i72sTYqS8RKyqSVqxIkLttIeJBzkzdMhojfzYbbx9aYmFuqLSsYV_KaTJfsW-Shgu1kd5eLB0G7vt_kguNk_XZpa8gSwm5TZJCeGrO_bQOsv_/s1600-h/sls+test+3.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix0wFNMGP3Mi0nmBDkPg-4-uM-iLSuUz4i72sTYqS8RKyqSVqxIkLttIeJBzkzdMhojfzYbbx9aYmFuqLSsYV_KaTJfsW-Shgu1kd5eLB0G7vt_kguNk_XZpa8gSwm5TZJCeGrO_bQOsv_/s320/sls+test+3.jpg" alt="" id="BLOGGER_PHOTO_ID_5228105678522959282" border="0" /></a>Here's a shot of a new iteration of the SLS Brazil material, the noise has been made 'bigger' and I tried to get more of a hint of the layer structure in the more vertical areas.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-89100779282507496642008-07-26T14:35:00.004-04:002008-07-26T14:57:49.808-04:00A simulation of a prototype<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-gXF4GIDfMEwYErX1NVwlgK_cgv45gwZxjnI2xVcckMPMreeoaunQR-YJhymvxQDorqhrfFZomwH8caS4uiYF-xUD9GAWZwVgyNiVgz92xhlOAEhFBUydgPy37caDY5L-lq49hyK7ZOBr/s1600-h/sls+test.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-gXF4GIDfMEwYErX1NVwlgK_cgv45gwZxjnI2xVcckMPMreeoaunQR-YJhymvxQDorqhrfFZomwH8caS4uiYF-xUD9GAWZwVgyNiVgz92xhlOAEhFBUydgPy37caDY5L-lq49hyK7ZOBr/s320/sls+test.jpg" alt="" id="BLOGGER_PHOTO_ID_5227393820107038066" border="0" /></a><br />I thought I'd try to make a Brazil material to approximate Selective Laser Sintering. Without some sort of actual displacement(which Brazil supports of course, though I'm not sure if that's even the answer to creating the 'stepped' appearance of the flatter areas of a rapid prototyped part, maybe it's best to simply brute-force turn the model into many many thin slices...)it's not going to look convincing up close, but at arm's length it's not too bad, the biggest problem with this shot being that the bumpiness on the rounder parts is too smooth and subtle. If I develop it a little more I might post a tutorial about it.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-85338207805168822312008-07-23T16:05:00.000-04:002008-07-23T16:06:24.802-04:00Revamping the websiteI've been redesigning the hydraulicdesign.net site and have a test version posted. The content is not complete, the design needs tweaking, some of the images are placeholders or haven't been scaled so the load times may be insane...so essentially it's not done at all, but the new order form setup, which is the important part, does work and I'd like to hear comments. UPDATE: I just went live with it.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-9143005394357525552008-07-15T09:09:00.002-04:002008-07-15T09:16:51.900-04:00Flamingo 2McNeel haven't made their official announcement yet, but (I am nonetheless authorized to say)that it is shipping now. The upgrade is $100 off for a limited time. <a href="http://www.hydraulicdesign.net/online_order_select.htm">See the order forms.</a>HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-87854874259777890532008-06-02T11:16:00.010-04:002008-06-03T16:02:26.630-04:00LG W2600H-PH first impressionWhy is it so hard to find reviews of monitors? All my usual sources of hardware advice spend all their time on things like motherboards and RAM, taking 20 pages comparing products that perform within 2% of each other.<br /><br />I picked this up yesterday primarily because it was on sale at Future Shop. My old LCD, which was my first LCD, is a 2004 vintage 20" Viewsonic VP201s, so I'm looking for something bigger. The 25.5" LG W2500H is certainly a nice size, and it does do a better job at DVD playback, but otherwise it's rather disappointing. I guess it wasn't a good sign to find that it only came with an analog cable, what sort of miserable bean-counters decide to ship a monitor in 2008 without a bloody DVI cable?<br /><br />I knew there had to be a reason why it's half the price of something like the only slightly bigger Samsung 275T--and indeed not far from half what my old LCD cost new--but I guess I was expecting to see more progress in four years than simply being cheaper and bigger. Compared to my 4-year-old monitor, the viewing angles are worse and the colour...oh, the colour. It's shocking how bad it is. It's like a jumbo version of a cheap laptop panel. Wait, no, I'm writing this on a cheap laptop and it's capable of showing a bright red as red, not hot pink.<br /><br />If I keep it it will only be because nothing else in the same size and price range would be much better, at least I can still use my old LCD for anything where colour matters.HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.comtag:blogger.com,1999:blog-4631433564543530360.post-70868071014629077952008-03-19T09:52:00.003-04:002008-11-07T05:24:21.977-05:00Recent ProjectLately I've been working quite a bit with with the marketing firm <a href="http://lulhamblack.com/">Lulham Black</a> on bottles for various household products for <a href="http://simplicityclean.com/">Simplicity Clean.</a>HDJimhttp://www.blogger.com/profile/03123555248882753076noreply@blogger.com