카테고리: Maya

Error: line 1: dlopen: cannot load any more object with static TLS

You may meet the error message “Error: line 1: dlopen: cannot load any more object with static TLS” when loading your own Maya plug-in. How solve the problem: 1. Unload Bifrost plug-ins (bimeshio.so, bifrostshellnode.so, bifrostvisplugin.so) and XGen plug-in (xgenToolkit.so). 2. Load your plug-in. Once you loaded your plug-in, you can load Bifrost and XGen plug-ins.

Abnormal Behavior of Maya Tweak with Custom Deformer

1. 테스트 씬 파일을 연다. 2. 플러그인을 로드한다. 3. 조인트를 선택한다. 4. Channel Box에서 Attribute들을 선택하고 “Mute All”을 실행한다. 5. 55 프레임으로 이동한다. 6. Channel Box에서 Attribute들을 선택하고 “Unmute All”을 실행한다. 8. 55 프레임이 아닌 다른 프레임으로 이동한다. 이상한 결과를 확인할 수 있다. 9. 노드 에디터를 열고 tweak 노드를 찾아서 삭제한다. 10. 정상적인 결과로 돌아오는

Maya Viewport 2.0

Viewport 2.0(이하 VP2)은 Maya 2012 부터 도입된 Autodesk사의 새로운 rendering architecture이다. VP2는 AutoCAD와 3ds MAX 등의 제품군에서도 활용되는 backend system이다. VP2는 programmable shader system, high-quality per-pixel lighting 등의 강력한 기능을 제공한다. 하지만, 완전히 새로운 rendering system이기 때문에 기존에 만들어 놓은 plug-in들을 지원하지 않는다. 예를들면 custom locator node는 Legacy Default Viewport에서만 작동하고 VP2에서는 draw() 함수가 호출조차

MFnNurbsCurve Error with OpenMP

Non-threadsafe functionality in Maya 2014 MFnNurbsCurve evaluation, for example, point on curve computation MFnNurbsSurface evaluation, for example, point on surface computation MFnSubd evaluation MFnNurbsCurve::closestPoint() is not thread-safe. But, it is thread-safe in Maya 2016.

Maya Context에 대하여…

Context란 마우스의 이벤트에 반응하여 어떠한 특정 작업 수행이 가능한 Maya의 특수 모드를 말한다. Maya에서 context는 tool과 동일한 개념으로 사용된다. 다만, graphical user interface 기준에서는 tool이라고 부르고, programming interface 기준에서는 context라고 부른다. setToolTo [context name]으로 특정 컨텍스트 모드로 들어갈 수 있다. currentCtx: 현재 어떠한 컨텍스트 모드에 있는지 알 수 있는 명령어. 다음과 같은 세 가지 API

How does Maya treat UV tweaks?

// Create a poly plane mesh; polyPlane -ch 1 -w 10 -h 10 -sx 10 -sy 10; // Create a empty mesh to be used as an output. createNode mesh; // Connect pPlaneShape1 to polySurfaceShape1. connectAttr pPlaneShape1.w polySurfaceShape1.inMesh; 위의 MEL script를 실행하면 다음과 같은 DG graph가 형성된다. 이 때, output mesh인 polySurfaceShape1의 uv는 다음과 같다.

Tweak data stored in mesh shape node

// create a unit plane mesh polyPlane -sw 1 -sh 1 -w 1 -h 1; // move the 1st vertex to (0,1,0) move -r 0 1 0 pPlane1.vtx[0]; // world position of the 1st vertex: (-0.5,1,0.5) pointPosition pPlane1.pnts[0]; // tweak vector of the 1st vertex: (0,1,0) getAttr pPlane1.pnts[0]; // reset the tweak vector of the

When compute() of a custom node isn’t called right after loading scene file

Custom node가 있는 Maya scene file을 save한 후 다시 open했을 때, auto-update가 되지 않는 문제가 발생하는 경우가 있다. ASCII 형식(.ma) 파일로 저장한 후 내용을 보면 custom node의 output attribute가 이상한 값으로 저장되어 있는 경우에 이러한 문제가 발생한다. 예) setAttr “.output” 1.4012984643248171e-44 이러한 문구를 없애주면 정상적으로 load되는 것을 확인할 수 있다. 해결 방법은 output attribute는 저장되지

How to exchange rotation matrix between Zelos and Maya

[pre-multiplied system with row-major ordering] (ex) Zelos X: rotation matrix about x-axis Y: rotation matrix about y-axis Z: rotation matrix about z-axis R: rotation matrix in x->y->z axis order. q=(ZYX)p Therefore, R = ZYX [post-multiplied system with column-major ordering] (ex) Maya qt = pt ( (Xt) (Yt) (Zt) )=pt (ZYX)t (t: transpose) Therefore, R =

MPxLocatorNode::draw()

Locator node를 사용하면 draw() 함수 안에서 custom data에 대한 OpenGL rendering을 구현하는 것이 가능하다. 그런데, MPxLocatorNode::draw() 함수 안에서 print를 해보면, Maya viewport에서 camera 정보가 변할 때 뿐만 아니라, viewport를 click하거나 marquee를 그리는 등의 조작을 할 경우에도 호출되는 것을 확인할 수 있다. Maya에서는 viewport를 click하거나 marquee를 그리는 등의 행동을 하게 되면 vieport 상에서 이렇게 지정한 영역과의 collision을 계산하여

Linux Maya에서 키보드가 먹통일 때

Tray에 있는 iBus input method framework를 마우스 오른쪽 버튼으로 선택한 후 restart를 해주면 된다. 만약 Tray에 iBus가 사라졌다면 홈디렉토리에 있는 .gconf 디렉도리를 삭제하면 초기화된다.

Conflict problem between Cuda and Maya

Maya는 MTypes.h에 short2, short3, long2, long3, int2, int3, float2, float3, double2, double3, double4 등의 자료형을 정의하여 사용한다. 용감하게도 어떠한 prefix나 namespace도 사용하지 않는다. Cuda는 vector_types.h에 int2, int3, float2, float3 등의 자료형을 정의하여 사용한다. Cuda 또한 용감하게도 어떠한 prefix나 namespace소 사용하지 않는다. Maya plug-in에서 사용하는 헤더파일(.h)에서 #include <cuda_runtime.h> 이나 #include <vector_types.h> 을 해주면 자연스럽게 충돌이 일어난다.

Maya custom node name and type id

A라고 불리는 custom Maya plug-in을 만들어서 사용하고 있었다. A에는 a라는 이름의 custom node가 있었다. 그리고, a 노드를 이용하여 제작한 aScene.mb 파일이 있다고 가정하자. 이 때, A를 보다 개선한 AA라는 custom Maya plug-in을 만들어서 사용하고자 한다. AA를 새로 배포하고 A를 삭제하였다. 과연 이 때, aScene.mb를 열면 a 노드는 어떻게 될까? 당연히 사라진다. 하지만 AA plug-in을 Load한

double array attribute가 연결상태에서 업데이트되지 않을 때,

[a.out] -> [b.in] 처럼 두 노드 사이에 double array attribute 를 연결시킬 때, a.out 은 매 프레임마다 업데이트되지만 b.in 은 처음 연결된 직후 상태의 값에서 변하지 않을 때가 있다. 예) select -r pPlaneShape1; addAttr -ln "rmanvFfoam" -dt "doubleArray"; connectAttr ZOceanEnvWaveGen1.foamMap pPlaneShape1.rmanvFfoam; b.in attribute 의 cached 속성값이 기본적으로 1 (true)로 설정되어 있기 때문이다. 만약 노드 b

polyEdit bug?

[Test environment] CentOS 5.4 Maya 2011 x64 [Test Code (mel)] polySphere; select -r pSphere1.map[0]; int $i = 0; for( ; $i<100000; ++$i ) {    polyEditUV -u 0.5 -v 0.5; } [Problem] maya를 종료할 때까지 memory가 계속 쌓이면서 release 되지 않음.

Error: Could not create command port

If you meet an error showing below message after maya starting up, commandPort -securityWarning -name commandportDefault; // Error: Could not create command port : commandportDefault (terminating other Maya instancesinstances may solve this problem) // su cd /tmp chown [your id]:[your id] commandportDefault

Error: missing extension: null.slo

Maya를 실행한 뒤 이러한 error가 발생할 때에는… sudo cp /opt/pixar/RenderManProServer-13.5.2/lib/shaders/matte.slo /opt/pixar/RenderMan_Studio-1.0.1-Maya2008/lib/shaders/null.slo

Maya MFnFluid bug? on Linux

I developed my own smoke simulator and rendered the data using Maya, but met a problem. MFnFluid fluidFn( fDagPath ); unsigned int Nx, Ny, Nz; fluidFn.getResolution( Nx, Ny, Nz ); float* density = fluidFn.density(); for( int i=0; i<Nx; ++i ) {    for( int j=0; j<Ny; ++j ) {       for( int k=0; k<Nz; ++k )

Compound Dynamic Attribute in Maya Bug

Maya에서 addattr로 dynamic attribute를 compound 형식으로 만들고 나서, deleteattr로 지운 뒤, 다시 같은 이름의 dynamic attribute를 addattr로 생성하면 다음과 같은 error가 발생하며 실패하게 된다. Too many children on this compound. Method 1 After deleting the dynamic compound attribute, save your scene and reload it. Create the same dynamic compound attribute. Method 2 After deleting the dynamic

MItMeshPolygon limitation

MItMeshPolygon::getArea does not work in World Space. The Object Space area is always returned. Workaround Use MItMeshPolygon::getTriangles to get the triangles in World Space; then calculate the areas of the triangles and sum them

Maya Particle Command

[bad usage] particle -q -attribute position -order 7; // Error: No object matches name: position // [good usage] particle -attribute position -order 7 -q particleShape1; // Result: 5 0 0 //

What a strange thing in Maya command plug-in

Very simple maya command plug-in code. #include #include #include #include class test : public MPxCommand {  public:   virtual MStatus doIt ( const MArgList& );   static void* creator() { return new test; } }; MStatus initializePlugin( MObject obj ) {  MStatus stat;  MFnPlugin plugin( obj, "wano", "1.0" );  stat = plugin.registerCommand( "test", test::creator );  if( !stat ) stat.perror( "registerCommand