tag:blogger.com,1999:blog-64999555549134672022024-02-08T13:29:58.580+09:00masin NoteRenderMan TDmasin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.comBlogger122125tag:blogger.com,1999:blog-6499955554913467202.post-87977963229261859332012-01-08T23:10:00.002+09:002012-01-08T23:12:42.614+09:00pymel 사용시 debug log hide하기<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA5xlwi74JkVQSswmwOEoEeb16TyTaayJUPFKBZAswsS7YgZEp5RYYcdDUEAlFS4JCXdZpSRMBsFuD8YaT9XCiyPLg5L2OYNsyYcN5KqQlx2DI3HBROXY77s9Xi79p-Ea7WSUCECHHg4c/s1600/pymel_debug.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA5xlwi74JkVQSswmwOEoEeb16TyTaayJUPFKBZAswsS7YgZEp5RYYcdDUEAlFS4JCXdZpSRMBsFuD8YaT9XCiyPLg5L2OYNsyYcN5KqQlx2DI3HBROXY77s9Xi79p-Ea7WSUCECHHg4c/s320/pymel_debug.jpg" width="299" /></a></div>
pymel사용시 모듈을 import하면 위와 같은 debug log가 출력된다.<br />
이를 안보이게하려면<br />
../pymel/pymel.conf 에서<br />
[logger_root]<br />
level=NOTSET -> WARNING 으로 수정masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-43877163398148117422011-12-13T16:45:00.002+09:002012-01-08T23:13:09.816+09:00MScritUtil example - vol.2<pre class="brush: py; smart-tabs: ture">oCmdResult = MCommandResult()
MGlobal.executeCommand('currentTime -q', oCmdResult)
scriptUtil = MScriptUtil()
ptr = scriptUtil.asDoublePtr()
oCmdResult.getResult(ptr)
frame = scriptUtil.getDouble(ptr)
</pre>
executeCommand의 내용에 따라 그 결과 값을 가져오는 방법은 다르지만 이와 같은 방법으로 MScriptUtil을 사용할수 있다.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-13797028129182076382011-12-12T15:21:00.001+09:002012-01-08T23:12:56.405+09:00MScritUtil example - vol.1<pre class="brush: py; smart-tabs: true">image = MImage()
image.readFromFile( filename )
scriptUtil = MScriptUtil()
widthPtr = scriptUtil.asUintPtr()
heightPtr = scriptUtil.asUintPtr()
scriptUtil.setUint( widthPrt, 0 )
scriptUtil.setUint( heightPtr, 0 )
image.getSize( widthPtr, heightPtr )
ix = scriptUtil.getUint( widthPtr )
iy = scriptUtil.getUint( heightPtr )
</pre>masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-26424005151321532552011-12-12T12:14:00.001+09:002011-12-12T12:33:25.015+09:00Python API 의 한계인가? vol.1MPxLocatorNode를 만들때 OpenGL에 관한 내용이다.
C style
<pre class="brush: c++; smart-tabs: true">
GLuint txid;
glGenTextures(1, &txid);
</pre>
python style의 경우 opengl 라이브러리를 사용
<pre class="brush: py; smart-tabs: true">
txid = glGenTextures(1)
</pre>
Maya Python API에서는
<pre class="brush: py; smart-tabs: true">
glRenderer = MHardwareRenderer.theRenderer()
glFT = glRenderer.glFunctionTable()
txid = glFT.glGenTextures( 1 )
</pre>
위의 경우
// Error: TypeError: MGLFunctionTable_glGenTextures expected 3 arguments, got 2 //
와 같은 에러를 출력한다.
해서 c-style로 수정하면
// Error: TypeError: in method 'MGLFunctionTable_glGenTextures', argument 3 of type 'MGLuint *' //
와 같은 에러를 출력한다.
python을 경우 변수타입을 지정할수 없다.
일반적인 경우 MScriptUtil을 이용하여 변수타입을 정해서 포인터로 받는 형태를 취하는데
MGLuint로 변수타입을 정할수는 없다.
이와 같은 에러의 주 원인은 glFunctionTable를 사용하려 함이다.
이를 사용하지 않고 python opengl라이브러리를 바로 사용한다면 이와 같은 에러는 발생하지 않는다.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-84134732865949895822011-12-06T14:51:00.001+09:002011-12-06T14:52:38.813+09:00Python Rif Layer - 3<pre class="brush: py; smart-tabs: true">
import prman
import sys
class myRif(prman.Rif):
def __init__(self, ri, shadingrate):
prman.Rif.__init__(self, ri)
self.m_shadingrate = int(shadingrate)
def ShadingRate(self, size):
self.m_ri.ShadingRate(self.m_shadingrate)
if len(sys.argv) == 4:
infile = sys.argv[1]
outfile = sys.argv[2]
shadingrate = sys.argv[3]
prman.Init(["-catrib", outfile, "-progress"])
ri = prman.Ri()
rif1 = myRif(ri, shadingrate)
prman.RifInit([rif1])
ri.Option("rib", {"string asciistyle": "indented"})
ri.Begin(ri.RENDER)
prman.ParseFile(infile)
ri.End()
</pre>masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-91032271815574554402011-12-06T14:47:00.001+09:002011-12-06T14:50:55.348+09:00Python Rif Layer - 2<pre class="brush: py; smart-tabs: true">
import prman
import sys
class myRif(prman.Rif):
def __init__(self, ri):
prman.Rif.__init__(self, ri)
def Option(self, name, plist):
if name == 'user':
if 'uniform float linearize' in plist:
self.m_ri.Option('user', {'uniform float linearize': 0})
else:
self.m_ri.Option('user', plist)
else:
self.m_ri.Option(name, plist)
if len(sys.argv) == 3:
infile = sys.argv[1]
outfile = sys.argv[2]
prman.Init(["-catrib", outfile, "-progress"])
ri = prman.Ri()
rif1 = myRif(ri)
prman.RifInit([rif1])
ri.Option("rib", {"string asciistyle": "indented"})
ri.Begin(ri.RENDER)
prman.ParseFile(infile)
ri.End()
</pre>masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-79937840762259261472011-12-06T14:28:00.001+09:002011-12-06T14:44:57.687+09:00Python Rif Layer - 1<pre class="brush: py; smart-tabs: true">
import prman
import sys
class myRif(prman.Rif):
def __init__(self, ri):
prman.Rif.__init__(self, ri)
self.m_nsubdivs = 0
def HierarchicalSubdivisionMesh(self, mask, nverts, verts, tags, nargs, intargs, floatargs, stringargs, plist):
nloops = [1 for i in range(len(nverts))]
self.m_ri.PointsGeneralPolygons(nloops, nverts, verts, plist)
self.m_nsubdivs += 1
if len(sys.argv) == 3:
infile = sys.argv[1]
outfile = sys.argv[2]
prman.Init(["-catrib", outfile, "-progress"])
ri = prman.Ri()
rif1 = myRif(ri)
prman.RifInit([rif1])
ri.Begin(ri.RENDER)
prman.ParseFile(infile)
ri.End()
print ("Converted %d subdivs to polys from %s into %s" % (rif1.m_nsubdivs, infile, outfile))
else:
print ("usage: %s infile.rib outfile.rib" % sys.argv[0])
</pre>masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-2919537831308735512011-08-18T17:17:00.000+09:002011-08-18T17:17:07.844+09:00PointCloud Bakebake3d에서 P, N의 값과 texture3d에서 P, N의 값이 같아야한다.<br />
<br />
Deform되는 mesh라고 하더라도....masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-55493403802329936762011-07-09T15:12:00.000+09:002011-07-09T15:12:41.270+09:00varying Normal vs facevarying Normalvarying Normal<br />
: per vertex normal in polymesh<br />
<br />
facevarying Normal<br />
: per vertex normal in polyface<br />
<br />
varying normal의 경우 normal soften edge, harden edge 를 표현할수 없다.<br />
interpolation에 의해 항상 soft하게 랜더된다.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-38937511944014160742011-07-02T16:00:00.000+09:002011-07-02T16:00:51.356+09:00Field of View<pre class="brush: py; smart-tabs: true">def fov(filmaperture, focallength):
rad_fov = 2.8 * math.atan((filmaperture*25.4) / (focallength*2.0))
return math.degrees(rad_fov)
</pre><br />
filmaperture는 screenwindow를 어떻게 설정하느냐에 따라<br />
horizontal 또는 vertical 값을 사용한다.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-63181549595570688982011-06-29T19:31:00.002+09:002011-06-29T19:32:00.034+09:00파일경로설정<pre class="brush: py; smart-tabs: true">fileObject = MFileObject()
fileObject.setRawFullName(filename)
fileObject.resolvedFullName()
</pre><br />
filename을 상대경로로 입력하면 FullPathName을 출력한다.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-67365060126681118032011-06-20T14:14:00.008+09:002011-07-02T15:56:01.424+09:00Get Attribute<pre class="brush: py; smart-tabs: true">def nameToNodePlug( attrName, nodeObject ):
depNodeFn = OpenMaya.MFnDependencyNode( nodeObject )
attrObject = depNodeFn.attribute( attrName )
plug = OpenMaya.MPlug( MObject, attrName )
return plug
</pre>nodeObject = MObject type<br />
<br />
MDagPath를 MObject type으로 변환하려면 MDagPath.node() Function을 사용.<br />
<br />
<pre class="brush: py; smart-tabs: true">dagPath = OpenMaya.MDagPath()
depFn = OpenMaya.MFnDependencyNode()
dagIt = OpenMaya.MItDag(OpenMaya.MItDag.kBreadthFirst, OpenMaya.MFn.kSurface)
while not dagIt.isDone():
dagIt.getPath(dagPath)
depFn.setObject(dagPath.node())
arrtObject = depFn.attribute('intermediateObject')
plug = OpenMaya.MPlug(dagPath.node(), arrtObject)
print plug.asInt()
dagIt.next()
</pre>뭐 대충 으런식으로 object shape attribute을 가져온다.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-12731945730167753082011-06-19T22:38:00.020+09:002011-06-20T00:23:56.791+09:00Scripted plug-in initializationWhen a scripted plug-in is loaded, Maya searches for an initializePlugin() function in its definition. Within this function, all proxy nodes are registered:<br />
<pre class="brush: py; smart-tabs: true"># Initialize the script plug-in
def initializePlugin(mobject):
mplugin = OpenMayaMPx.MFnPlugin(mobject)
try:
mplugin.registerCommand( kPluginCmdName, cmdCreator )
except:
sys.stderr.write( "Failed to register command: %s\n" % kPluginCmdName )
raise
</pre>masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-67524070012367508422011-06-19T22:29:00.003+09:002011-06-19T22:32:41.919+09:00Writing a scripted plug-in<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js" type="text/javascript">
</script> <script src="http://alexgorbatchev.com/pub/sh/current/scripts/shAutoloader.js" type="text/javascript">
</script> <script type="text/javascript">
//<![CDATA[
function path() { for (var b = arguments, c = [], a = 0; a < b.length; a++) c.push(b[a].replace("@", "http://alexgorbatchev.com/pub/sh/current/scripts/")); return c };
SyntaxHighlighter.autoloader.apply(null, path(
'applescript @shBrushAppleScript.js',
'actionscript3 as3 @shBrushAS3.js',
'bash shell @shBrushBash.js',
'coldfusion cf @shBrushColdFusion.js',
'cpp c @shBrushCpp.js',
'c# c-sharp csharp @shBrushCSharp.js',
'css @shBrushCss.js',
'delphi pascal @shBrushDelphi.js',
'diff patch pas @shBrushDiff.js',
'erl erlang @shBrushErlang.js',
'groovy @shBrushGroovy.js',
'java @shBrushJava.js',
'jfx javafx @shBrushJavaFX.js',
'js jscript javascript @shBrushJScript.js',
'perl pl @shBrushPerl.js',
'php @shBrushPhp.js',
'text plain @shBrushPlain.js',
'py python @shBrushPython.js',
'ruby rails ror rb @shBrushRuby.js',
'sass scss @shBrushSass.js',
'scala @shBrushScala.js',
'sql @shBrushSql.js',
'vb vbnet @shBrushVb.js',
'xml xhtml xslt html @shBrushXml.js'
));
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
//]]>
</script><br />
Writing a scripted plug-in requires the definition of some specialized functions within the plug-in. The scripted plug-in must:<br />
<br />
Define <b><i>initializePlugin</i></b> and <b><i>uninitializePlugin</i></b> entry points.<br />
Register and unregister the proxy class within these entry points.<br />
Implement creator and initialize methods (as required) which Maya calls to build the proxy class.<br />
Implement the required functionality of the proxy class. This requires importing the necessary modules.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-86987385785091807442011-06-19T15:38:00.000+09:002011-06-19T15:38:50.317+09:00Writing scripts<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js" type="text/javascript">
</script> <script src="http://alexgorbatchev.com/pub/sh/current/scripts/shAutoloader.js" type="text/javascript">
</script> <script type="text/javascript">
//<![CDATA[
function path() { for (var b = arguments, c = [], a = 0; a < b.length; a++) c.push(b[a].replace("@", "http://alexgorbatchev.com/pub/sh/current/scripts/")); return c };
SyntaxHighlighter.autoloader.apply(null, path(
'applescript @shBrushAppleScript.js',
'actionscript3 as3 @shBrushAS3.js',
'bash shell @shBrushBash.js',
'coldfusion cf @shBrushColdFusion.js',
'cpp c @shBrushCpp.js',
'c# c-sharp csharp @shBrushCSharp.js',
'css @shBrushCss.js',
'delphi pascal @shBrushDelphi.js',
'diff patch pas @shBrushDiff.js',
'erl erlang @shBrushErlang.js',
'groovy @shBrushGroovy.js',
'java @shBrushJava.js',
'jfx javafx @shBrushJavaFX.js',
'js jscript javascript @shBrushJScript.js',
'perl pl @shBrushPerl.js',
'php @shBrushPhp.js',
'text plain @shBrushPlain.js',
'py python @shBrushPython.js',
'ruby rails ror rb @shBrushRuby.js',
'sass scss @shBrushSass.js',
'scala @shBrushScala.js',
'sql @shBrushSql.js',
'vb vbnet @shBrushVb.js',
'xml xhtml xslt html @shBrushXml.js'
));
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
//]]>
</script><br />
The Maya Python API modules contain the classes that are available for Python programming. These classes are separated into different categories and have appropriate naming conventions to signify their association. Classes include:<br />
<br />
<b>MFn</b><br />
Any class with this prefix is a function set used to operate on MObjects of a particular type.<br />
<br />
<b>MIt</b><br />
These classes are iterators and work on MObjects similar to the way a function set does. For example, MItCurveCV is used to operate on an individual NURBS curve CV (there is no MFnNurbsCurveCV), or, iteratively, on all the CVs of a curve.<br />
<br />
<b>MPx</b><br />
Classes with this prefix are all "Proxies", that is, API classes designed for you to derive from and create your own object types.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-81582808422750536022011-06-19T15:34:00.000+09:002011-06-19T15:34:13.974+09:00Help on a module or class<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js" type="text/javascript">
</script> <script src="http://alexgorbatchev.com/pub/sh/current/scripts/shAutoloader.js" type="text/javascript">
</script> <script type="text/javascript">
//<![CDATA[
function path() { for (var b = arguments, c = [], a = 0; a < b.length; a++) c.push(b[a].replace("@", "http://alexgorbatchev.com/pub/sh/current/scripts/")); return c };
SyntaxHighlighter.autoloader.apply(null, path(
'applescript @shBrushAppleScript.js',
'actionscript3 as3 @shBrushAS3.js',
'bash shell @shBrushBash.js',
'coldfusion cf @shBrushColdFusion.js',
'cpp c @shBrushCpp.js',
'c# c-sharp csharp @shBrushCSharp.js',
'css @shBrushCss.js',
'delphi pascal @shBrushDelphi.js',
'diff patch pas @shBrushDiff.js',
'erl erlang @shBrushErlang.js',
'groovy @shBrushGroovy.js',
'java @shBrushJava.js',
'jfx javafx @shBrushJavaFX.js',
'js jscript javascript @shBrushJScript.js',
'perl pl @shBrushPerl.js',
'php @shBrushPhp.js',
'text plain @shBrushPlain.js',
'py python @shBrushPython.js',
'ruby rails ror rb @shBrushRuby.js',
'sass scss @shBrushSass.js',
'scala @shBrushScala.js',
'sql @shBrushSql.js',
'vb vbnet @shBrushVb.js',
'xml xhtml xslt html @shBrushXml.js'
));
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
//]]>
</script><br />
help(maya.OpenMaya.MVector)<br />
help(maya.OpenMaya)masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-72486396645893054212011-06-14T14:04:00.000+09:002011-06-14T14:04:11.585+09:00Slim Tcl Expression for color, vector, point<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js" type="text/javascript">
</script> <script src="http://alexgorbatchev.com/pub/sh/current/scripts/shAutoloader.js" type="text/javascript">
</script> <script type="text/javascript">
//<![CDATA[
function path() { for (var b = arguments, c = [], a = 0; a < b.length; a++) c.push(b[a].replace("@", "http://alexgorbatchev.com/pub/sh/current/scripts/")); return c };
SyntaxHighlighter.autoloader.apply(null, path(
'applescript @shBrushAppleScript.js',
'actionscript3 as3 @shBrushAS3.js',
'bash shell @shBrushBash.js',
'coldfusion cf @shBrushColdFusion.js',
'cpp c @shBrushCpp.js',
'c# c-sharp csharp @shBrushCSharp.js',
'css @shBrushCss.js',
'delphi pascal @shBrushDelphi.js',
'diff patch pas @shBrushDiff.js',
'erl erlang @shBrushErlang.js',
'groovy @shBrushGroovy.js',
'java @shBrushJava.js',
'jfx javafx @shBrushJavaFX.js',
'js jscript javascript @shBrushJScript.js',
'perl pl @shBrushPerl.js',
'php @shBrushPhp.js',
'text plain @shBrushPlain.js',
'py python @shBrushPython.js',
'ruby rails ror rb @shBrushRuby.js',
'sass scss @shBrushSass.js',
'scala @shBrushScala.js',
'sql @shBrushSql.js',
'vb vbnet @shBrushVb.js',
'xml xhtml xslt html @shBrushXml.js'
));
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
//]]>
</script><br />
Color and Point Functions<br />
rgb(r,g,b), rgbi(ir,ig,ib)<br />
Allow the specification of color (vector) parameters. r,g,b in the range [0,1], ir,ig,ib in the range [0,255].<br />
<br />
hsv(h,s,v), hsvi(ih,is,iv)<br />
Allow the specification of color (vector) parameters in the HSV color space. h,s,v in the range [0,1], ih,is,iv in the range [0,255]. Note that this will immediately convert the hsv values to rgb values.<br />
<br />
xyz(x,y,z)<br />
Allow the specification of point (vector) parameters.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-78115679746902098252011-06-09T20:36:00.002+09:002011-06-09T20:36:23.796+09:00Slim co-shader attach Bug!<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js" type="text/javascript">
</script> <script src="http://alexgorbatchev.com/pub/sh/current/scripts/shAutoloader.js" type="text/javascript">
</script> <script type="text/javascript">
//<![CDATA[
function path() { for (var b = arguments, c = [], a = 0; a < b.length; a++) c.push(b[a].replace("@", "http://alexgorbatchev.com/pub/sh/current/scripts/")); return c };
SyntaxHighlighter.autoloader.apply(null, path(
'applescript @shBrushAppleScript.js',
'actionscript3 as3 @shBrushAS3.js',
'bash shell @shBrushBash.js',
'coldfusion cf @shBrushColdFusion.js',
'cpp c @shBrushCpp.js',
'c# c-sharp csharp @shBrushCSharp.js',
'css @shBrushCss.js',
'delphi pascal @shBrushDelphi.js',
'diff patch pas @shBrushDiff.js',
'erl erlang @shBrushErlang.js',
'groovy @shBrushGroovy.js',
'java @shBrushJava.js',
'jfx javafx @shBrushJavaFX.js',
'js jscript javascript @shBrushJScript.js',
'perl pl @shBrushPerl.js',
'php @shBrushPhp.js',
'text plain @shBrushPlain.js',
'py python @shBrushPython.js',
'ruby rails ror rb @shBrushRuby.js',
'sass scss @shBrushSass.js',
'scala @shBrushScala.js',
'sql @shBrushSql.js',
'vb vbnet @shBrushVb.js',
'xml xhtml xslt html @shBrushXml.js'
));
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
//]]>
</script><br />
Add slim.ini<br />
SetPref SlimAttachableMap(class) {surface coshader}masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-20315041720675619442011-05-24T10:17:00.002+09:002011-06-30T17:13:34.683+09:00ImageMagick Convert colorspaceImageMagick Convert 명령어는 정말 강력하다.<br />
hdr, exr, pfm 내가원가는 모든것을 지원한다. 특히 colorspace convert는 환상적이다. ㅋㅋㅋ<br />
<br />
ex. linear to sRGB<br />
convert -set colorspace sRGB -colorspace RGB inputfile outputfile<br />
<br />
심각한 버그 발견!<br />
colorspace 옵션이 붙으면 float이미지가 integer처럼 clipping된다.<br />
해서... 직접 수식을 입력하여 colorspace를 변환 했다.<br />
<br />
[linear to sRGB]<br />
convert -fx "(p <= 0.0031308) ? 12.92*p : pow(1.055*p, 1.0/2.4)-0.055" inputfile outputfile<br />
<br />
[srgb to linear]<br />
convert -fx "(p <= 0.04045) ? 1/12.92*p : pow((p+0.055)/1.055, 2.4)" inputfile outputfilemasin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-89940169930033630862011-03-06T22:11:00.053+09:002011-06-20T14:27:00.408+09:00 Slim.ini 설정팁 1slim.ini파일에서<br />
RMS_SCRIPT_PATHS를 환경변수로 가져올때 OS에 따라 설정이 다르다.<br />
<br />
# 예제<br />
set getenvpath [GetEnv RMS_SCRIPT_PATHS]<br />
if {$pf(platform) == "windows"} {<br />
set extpath [string map {"\\" "/"} $getenvpath]<br />
} else {<br />
set extpath $getenvpath<br />
}masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-21244002854883169622010-11-11T18:54:00.000+09:002010-11-11T18:54:36.478+09:00Maya2011 Linux X11 설정http://linux.die.net/man/1/nvidia-xconfig<br />
<br />
nvidia-xconfig --no-cioverlay<br />
nvidia-xconfig --overlay<br />
cmd실행masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-35518074187610482852010-07-13T23:56:00.004+09:002011-06-20T00:11:29.261+09:00[RSL] Mathematical Functions 중에서.... v.1float floor ( float x )<br />
float ceil ( float x )<br />
float round ( float x )<br />
<br />
floor returns the largest integer (expressed as a float) not greater than x. ceil returns the smallest integer (expressed as a float) not smaller than x. round returns the integer closest to x.<br />
<br />
integer값을 float 타입으로 반환받기 위한 방법이다.<br />
floor : 내림, ceil : 올림, round : 반올림 으로 생각하면 간단할것 같다.<br />
<br />
object index id를 aov로 출력할때 이 방법을 사용하였다.<br />
ex.<br />
<br />
output varying color objid[100] = {};<br />
<br />
float index = 0;<br />
attribute("identifier:id", index);<br />
float color_array = floor(index / 3);<br />
setcomp(objid[color_array], index - 3 * color_array, 1);masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-15118457922704797882010-06-06T20:50:00.000+09:002010-06-06T20:50:06.183+09:00Motion Vector를 랜더해야할 경우...Hider "hidden" "float samplemotion" 0<br />
옵션을 붙여야한다.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com1tag:blogger.com,1999:blog-6499955554913467202.post-6936408316906781752010-05-31T19:59:00.000+09:002010-05-31T19:59:31.631+09:00Explicit Light Cache Controlilluminance("category", ..., "lightcache", "reuse") 이건 default set<br />
illuminance("category", ..., "lightcache", "refresh")<br />
이것때문에 상당한 삽질했다.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0tag:blogger.com,1999:blog-6499955554913467202.post-52522742833630911922010-05-25T01:57:00.000+09:002010-05-25T01:57:04.365+09:00[RSL] string 만들기...uniform float i = 0;<br />
string ic;<br />
<br />
ic = format("%d", i);<br />
txfile = concat("filename", "_u", ic, ".tex");<br />
<br />
이렇게하면 txfile = filename_u0.tex 가 된다.masin77http://www.blogger.com/profile/00385029466335978095noreply@blogger.com0