2015-12-17 20 views
1

我正在嘗試爲Maya創建Mel或Python腳本,它將通過一個方形矩陣逐行移動攝像頭。能夠輸入自定義行/列值(N)會很棒。用於沿着(x,y)網格移動攝像頭的Mel/Python腳本

我速寫an algorithm我需要,但遺憾的是缺乏實現代碼的知識。

在代碼方面的任何幫助將不勝感激 - 謝謝。

+1

對於這個簡單的算法,[Python Tutorial](https://docs.python.org/3/tutorial/index.html)就足夠了。 – MKesper

+1

這裏有一些問題:爲什麼你需要將它逐行移動? (有些命令可以立即移動到指定位置)翻譯的每一步都需要進行額外的處理嗎?有多少自定義的行/列值? (1代表x和1代表y,或者只有1個自定義值適用於x和y?)您的算法說最後「x = y = N」但它可以被簡化(您不需要x = N?'測試) – DrHaze

+0

記得謝謝你只是一句話。聲譽使網站的工作。 – joojaa

回答

1

你要使用的主要命令是lsxformcurrentTimesetKeyFrame

下面是基本的Python腳本設置的轉換位置。您可以使用currentTime更改時間值,並使用setKeyFrame設置密鑰。

此腳本希望您選擇相機轉換節點(即第一個ls命令)。

import maya.cmds as cmds 

nx = 10 
ny = 10 
cam = cmds.ls(selection=True)[0] 

z = 0 
for x in range(nx): 
    for y in range(ny): 
     cmds.xform(cam, worldSpace=True, translation=[x, y, z]) 
2

雖然@BrendanAbels答案是健全的,它迴避什麼瑪雅人的用途。 Maya用於動畫,因此你很少想要在你的代碼中移動東西(這樣,因爲它沒有任何用途)。你想要的是你的代碼啓動一個節點結構來完成你想要的。

建築節點的優點如下:

  1. 瑪雅將建立一個GUI爲您服務。任何有能力的Maya用戶都知道如何操作修改和動畫的GUI。
  2. 您可以稍後更改結構的內部工作或爲輸入設置動畫效果。
  3. 這將您的代碼嵌入到Maya文件中,以便稍後恢復。

好的,那麼我們該怎麼做。有幾種方法。我們可以使用斜坡和查找節點。或者我們可以直接完成並直接連接表達式節點。那麼,這看起來像梅爾:

addAttr -at long -sn N -k 1 persp; 
addAttr -at long -sn Xmax -k 1 -min 1 -dv 10 persp; 
addAttr -at long -sn Ymax -k 1 -min 1 -dv 10 persp; 
expression -s ("translateX = N % Xmax;\r\n" + 
       "translateY = ((N - translateX)/Xmax) % Ymax;") 
      -o persp -uc all persp; 
connectAttr time1.o persp.N; 
// eliminate prev line if you want to drive manually 

persp節點如何有3個新的渠道,你可以調整。我把時間吸引到了你的節點上,但是你可以真正連接任何東西。自己駕駛它可以讓你做不同的事情(或者如果你願意的話,可以移動攝像頭中間渲染通道)。

你對你想用什麼來說有點不透明,所以很難說更多。只要說我們可以用更少的工作從頭到尾解決你的整個問題,而且你做任何我們以前從未見過的事情是不太可能的。

+0

劇本的作品就像一個魅力!我在第一次嘗試時犯了一個語法錯誤,所以我認爲有些錯誤,但一切都很完美!謝謝! –