View Categories

Komut dosyası oluşturma

10 dakika okuma

Bu sayfa, Chaos Phoenix ile komut dosyalarının nasıl kullanılabileceğine dair bilgiler sunmaktadır.

Genel Bakış #


Simülasyon işlemi sırasında, eklenti tarafından dışa aktarılan bazı fonksiyonları kullanarak simülatörün içeriğine doğrudan erişebilirsiniz. Bu fonksiyonlar rastgele herhangi bir anda çağrılamaz; yalnızca simülatör uygun iç durumda olduğunda düzgün çalışırlar. İçeriğin düzgün bir şekilde manipüle edilebileceği anlar, çeşitli geri çağırma fonksiyonları çağrılarak belirtilir ve simülatörün içeriğine yalnızca bu fonksiyonlar içinde erişebilirsiniz.

Her Phoenix Simulator düğümünün kendi komut dosyası dosyası vardır. Simülasyon başladığında, komut dosyası derlenir ve geri çağırma işlevi, önceki simülasyonların geri çağırma işlevlerini geçersiz kılar. Python ve MEL komut dosyaları desteklenmektedir. Python’ın ikisi arasında daha hızlı olduğu belirtilmiştir. Python modülü, Maya için Phoenix eklentisine entegre edilmiştir ve  phxfd olarak adlandırılır .

 

Geri Çağrı Fonksiyonları #


Dört adet geri çağırma fonksiyonu vardır ve bunların isimleri uygun şekilde verilmelidir.

İşlev

Tanım

OnSimulationBegin(node, t, dt)

Simülatörün tüm başlatma işlemleri tamamlandıktan sonra ve ilk çalıştırmadan önce çağrılır.

OnSimulationStep(node, t, dt)

Her simülasyon adımından önce, sahneyle etkileşimden sonra çağrılır.

OnSimulationEnd(node, t, dt)

Simülasyonun bitiminden sonra çağrılır. Bu geri çağırma sırasında simülasyon çekirdeği zaten yok edilmiş olacağından, ona erişilmemelidir.

OnNewFrame(node, t, dt)

Her kare dışa aktarımından sonra çağrılır.

 

Geri Çağrı Parametreleri #


Yukarıdaki geri çağırma fonksiyonlarının her birine aşağıdaki parametreler aynı sırayla iletilir:

Parametre

Tanım

düğüm  <dize>

Geri çağırma fonksiyonunu çağıran simülatör, simülatör düğümünün adını içeren bir dize döndürür.

 <float>

Simülatörün dahili zamanı – döndürülen değer, mevcut kare sayısına / saniyedeki kare sayısına eşittir.

dt  <float>

Simülatörün dahili adımı – döndürülen değer, geçerli zamana / (saniyedeki kare sayısı * kare başına adım sayısı) eşittir.

 

Komut Dosyası Örneği #


PYTHON 3 (Maya 2022 ve üzeri sürümler için kullanılır):

import maya.cmds as cmds
import phxfd
def OnNewFrame(node, t, dt):
print (node)
print (t)
print (dt)
if( cmds.currentTime(query = True) == 2 ):
phxfd.stop()

PYTHON 2 (Maya 2020 ve daha eski sürümler için kullanılır):

import maya.cmds as cmds
import phxfd
def OnNewFrame(node, t, dt):
print node
print t
print dt
if( cmds.currentTime(query = True) == 2 ):
phxfd.stop()

MEL:

global proc OnNewFrame(string $node, float $t, float $dt) {
print $node;
print $t;
print $dt;
$now = `currentTime -q`;
if($now == 2){
phxfdSim -n $node -a “stop”;
}
}

 

Fonksiyon Bildirimi #


Örnek MEL fonksiyon bildirimi:

global proc OnSimulationBegin(string $node, float $t, float $dt)

Örnek Python fonksiyon bildirimi:

def OnSimulationBegin(node, t, dt):

Simülasyon Çekirdeği ve Sonuç Erişim Fonksiyonları #


Simülasyon kanallarının her biri (sıcaklık, hız, duman vb.) iki örnekte bulunur: simülasyon çekirdeğinde ve simülasyon sonucunda (yani önbellekte). Bu bölümdeki fonksiyonlar hem simülasyon çekirdeğine hem de sonuca erişebilir. Erişim fonksiyonlarına bir düğüm geçirilirse, ilgili simülasyon sonucuna erişilir; aksi takdirde simülasyon çekirdeğine erişilir.

 

 

MEL Fonksiyonları #

phxfdSystem  [ -q ] [ -node (-n) string] [ sistem  dizesi]

phxfdGet ,  phxfdInject  ve  phxfdParticle fonksiyonları çağrılırken hangi koordinat sisteminin kullanılacağını belirtin  .

Dönüş değeri:

hiçbiri

phxfdInject  [ -node (-n) string]  -position (-pos) float float float  -discharge (-d) float [ -temperature (-t) float] [ -smoke (-sm) float] [ -fuel (-fl) float] [ -velocity (-vel) float float float] [ -uvw  float float float]

Belirli bir noktaya sıvı enjekte edin. Bu fonksiyonu kullanarak kendi prosedürel kaynaklarınızı oluşturabilirsiniz. Fonksiyonun sonucu, bir veya daha fazla phxfdSet fonksiyonu çağrılarak elde edilemez, çünkü bunlar sıvının miktarını değil, yalnızca sıvının taşıdığı parametreleri etkiler. Bir noktaya sıvı enjeksiyonu, yalnızca en yakın 8 hücrenin içeriğinde değişikliklere neden olur, ancak tüm ızgarada dışa doğru bir akış üretir. Bununla birlikte, fonksiyon sıradan  phfxSet  fonksiyonundan daha yavaş değildir, çünkü dışa doğru akış simülasyon yürütüldüğünde daha sonra ortaya çıkar.  phxfdInject’ten hemen sonra yakın bir noktada phxfdGet  fonksiyonu çalıştırılırsa  , hız değişmez.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

phxfdSet  [ -node (-n) string]  -position (-pos) int int int [ -temperature (-t) float] [ -smoke (-sm) float] [ -fuel (-fl) float] [ -velocity (-vel) float float float] [ -uvw  float float float]

Izgara içindeki belirli bir hücrenin içeriğini doğrudan ayarlayın. Bu işlevin yalnızca ızgara alanında çalıştığını ve  phxfdSystem’in  bunun üzerinde bir etkisi olmadığını unutmayın.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

phxfdGet  [ -node (-n) string]  -position (-pos) float float float [ -temperature (-t)] -smoke (-sm)] [ -fuel (-fl)] [ -velocity (-vel)] [ -uvw ]

Verilen bir noktadaki ızgaranın içeriğini alın. Noktanın phxfdSystem tarafından belirtilen koordinat sisteminde olduğunu unutmayın .

Dönüş değeri:

float[]  O noktadaki ızgaranın içeriğini içeren float dizisi. Sıraya alınmış kanallar sabit bir sırayla döndürülür – sıcaklık, duman, yakıt, hız, UVW.

phxfdFreeze -position (-pos) int int int [ freeze  bool] [ source  bool] 

Simülasyon sırasında bir hücreyi dondurun. Hücre isteğe bağlı olarak bir kaynak haline getirilebilir.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

phxfdParticle  [ -node (-n) string]  -position (-pos) float float float  -partgroup (-pg) string [ -velocity (-vel) float float float] [ -radius (-rad) float]

Verilen konumda ve verilen özelliklerle bir parçacık oluşturun.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

phxfdSaveCache dosya adı dizesi  düğüm dizesi 

Izgara içeriğini bir AUR veya VDB önbellek dosyasına kaydedin.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

 

 

Python Fonksiyonları #

setsystem sistem  dizesi [ düğüm  dizesi] 

`get` ,  `inject`  ve  `particle` fonksiyonları çağrılırken hangi koordinat sisteminin kullanılacağını belirtin  .

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

getsystem  [ düğüm  dizesi]

Geçerli koordinat sistemini döndürün.

Dönüş değeri:

Geçerli  koordinat sistemi.

enjekte et  (  float,   float   float)  boşalt  float [ temp  float] [ smoke  float] [( vx  float,  vy  float,  vz  float)] [( float,   float,   float)]

Belirtilen noktaya sıvı enjekte edin. Bu fonksiyonu kullanarak kendi prosedürel kaynaklarınızı oluşturabilirsiniz. Fonksiyonun sonucu, bir veya daha fazla  set  fonksiyonu çağrılarak elde edilemez, çünkü bunlar sıvının miktarını değil, yalnızca sıvının taşıdığı parametreleri etkiler. Bir noktaya sıvı enjekte edilmesi, yalnızca en yakın 8 hücrenin içeriğinde değişikliklere neden olur, ancak tüm ızgarada dışa doğru bir akış üretir. Bununla birlikte, fonksiyon sıradan phfxSet fonksiyonundan daha yavaş değildir, çünkü dışa doğru akış simülasyon yürütüldüğünde daha sonra ortaya çıkar. Yakın bir  noktaya enjeksiyondan hemen sonra get  fonksiyonu yürütülürse   , hız değişmeyecektir.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

set  ( cx  int,  cy  int  cz  int) [ temp  float] [ smoke  float] [( vx  float,  vy  float,  vz  float)] [(  float,   float,  float)] [ node  string]

Izgara içindeki belirli bir hücrenin içeriğini doğrudan ayarlayın. Bu işlevin yalnızca ızgara alanında çalıştığını ve  setsystem’in  bunun üzerinde etkisinin olmadığını unutmayın.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

setT  ( cx  int,  cy  int  cz  int)  temp  float [ node  string]

Izgara içindeki belirli bir hücrenin sıcaklığını doğrudan Kelvin cinsinden ayarlayın. Bu fonksiyonun yalnızca ızgara alanında çalıştığını ve  setsystem komutunun  bunun üzerinde etkisinin olmadığını unutmayın.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

setSm  ( cx  int,  cy  int  cz  int)  temp  float [ node  string]

Izgara içindeki belirli bir hücrenin “Duman” kanalının değerini doğrudan ayarlayın. Bu fonksiyonun yalnızca ızgara alanında çalıştığını ve  setsystem’in  bunun üzerinde etkisinin olmadığını unutmayın.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

setFl  ( cx  int,  cy  int  cz  int)  temp  float [ node  string]

Izgara içindeki belirli bir hücrenin “Yakıt” kanalının değerini doğrudan ayarlayın. Bu fonksiyonun yalnızca ızgara alanında çalıştığını ve  setsystem komutlarının bu fonksiyonu  etkilemediğini unutmayın.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

setV  ( cx  int,  cy  int  cz  int)  temp  float [ node  string]

Izgara içindeki belirli bir hücrenin hızını doğrudan ayarlayın. Bu fonksiyonun yalnızca ızgara alanında çalıştığını ve  setsystem’in  bunun üzerinde etkisinin olmadığını unutmayın.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

setUVW  ( cx  int,  cy  int  cz  int)  temp  float [ node  string]

Izgara içindeki belirli bir hücrenin “UVW” kanalının değerini doğrudan ayarlayın. Bu fonksiyonun yalnızca ızgara alanında çalıştığını ve  setsystem’in  bunun üzerinde etkisinin olmadığını unutmayın.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

 (  float,   float,   float) [ düğüm  dizesini al

Verilen bir noktadaki ızgaranın içeriğini alın. Noktanın, setsystem ile belirtilen koordinat sisteminde olduğunu unutmayın .

Dönüş değeri:

[float float float tuple tuple]  İçeriği şu sırayla olan bir dizi: sıcaklık, duman, yakıt, hız, UVW.

getT  (  float,   float   float) [ düğüm  dizesi]

Izgaranın belirli bir noktasındaki sıcaklığı Kelvin cinsinden alın. Noktanın,  setsystem ile belirtilen koordinat sisteminde olduğunu unutmayın .

Dönüş değeri:

 Sıcaklığı Kelvin cinsinden ifade edin .

getSm  (  float,   float   float) [ düğüm  dizesi]

Verilen bir noktadaki “Duman” kanalının değerini alın. Noktanın,  setsystem ile belirtilen koordinat sisteminde olduğunu unutmayın .

Dönüş değeri:

 Dumanı havada tutmak .

getFl  (  float,   float   float) [ düğüm  dizesi]

Verilen bir noktadaki “Yakıt” kanalının değerini alın. Noktanın,  setsystem ile belirtilen koordinat sisteminde olduğunu unutmayın .

Dönüş değeri:

 Yakıtı yüzdürün .

getV  (  float,   float   float) [ düğüm  dizesi]

Verilen bir noktadaki ızgaranın hızını alın. Noktanın, setsystem ile belirtilen koordinat sisteminde olduğunu unutmayın .

Dönüş değeri:

 Hızı demet halinde gösterin .

getUVW  (  float,   float   float) [ düğüm  dizesi]

Verilen bir noktadaki “UVW” kanalının değerini alın. Noktanın,  setsystem ile belirtilen koordinat sisteminde olduğunu unutmayın .

Dönüş değeri:

 UVW’yi demetleyin .

dondurma  ( cx  int,  cy  int  cz  int) [ dondurma  boolean] [ kaynak  boolean]

Simülasyon sırasında hücreyi belirli bir noktada dondurun/çözün ve isteğe bağlı olarak kaynak olarak işaretleyin.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

parçacık grubu  dizesi (  float,   float   float) [( vx  float,  vy  float,  vz  float)] [ yarıçap  float] [ düğüm  dizesi] 

Verilen özelliklere sahip, belirli bir konumda bir parçacık oluşturun.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

saveCache dosya adı  dizesi [ düğüm  dizesi] 

Izgara içeriğini bir önbellek dosyasına kaydedin.

Dönüş değeri:

 İşlem başarıyla tamamlandıysa  true , aksi takdirde false  .

 

Yardımcı Komut Dosyası Fonksiyonları #


Bu fonksiyonlar simülasyon sürecinin bir parçası değildir, ancak normalde grafik kullanıcı arayüzü (GUI) aracılığıyla erişilen işlevselliği programlamak için kullanılabilirler.

MEL Fonksiyonları #

phxfdSim  [ -q ] [ -node (-n) string] [ -action (-a) string] [ -flags (-f) int] [ -fname (-fn) string] [ -debug (-d) int]

Bu, simülatör düğümünü kontrol etmek için kullanılan ana komuttur.

Dönüş değeri:

hiçbiri

phxfdGetRoot

Phoenix kurulumunun kök yolunu döndürür. Eğer “.” döndürülürse, Phoenix ortam değişkeni bulunamadı demektir.  getPhoenixFDRoot  ayrıca yedek konumu da döndürür.

phxfdSort kamera  dizesi  düğümleri  dize[] 

İkinci argüman olarak geçirilen düğümleri belirli bir kameraya göre sıralayın. Bu komut, örneğin görüntüleme sırasını belirlemek için kullanılabilir.

Dönüş değeri:

string[]  Sıralanmış düğüm dizisi.

phxfdSaveFramePreview düğümleri  string[]  birleştirme  int  dosya adı  string  kameralar  string[] 

Geçerli kare için bir GPU önizlemesi kaydedin. İlk argüman, işlenecek düğümlerin listesini belirtir. Birleştirme değeri 1 ise, tüm düğümlerin önizlemesi tek bir görüntüde birleştirilir; aksi takdirde her düğüm ayrı bir görüntüye işlenir. Dosya adı boş değilse, varsayılan dosya adının geçersiz kılınmasına olanak tanır. Kameralar listesindeki her kamera için bir görüntü işlenecektir .

phxfdSaveAnimPreview düğümleri  string[]  startFrame  int  endFrame  int  merge  int  dosya adı  string kameralar  string[] 

phxfdSaveFramePreview ile aynı işlevi görür  , ancak varsayılan kare yerine işlenecek kare aralığını belirtmenize olanak tanır.

phxfdConnectRenderGizmo

İki düğüm seçildiğinde, bu komut şekil düğümünü simülatör/köpük düğümü için işleme aracı olarak atayacaktır.

phxfdConnectGlassGizmo

İki düğüm seçildiğinde, bu komut şekil düğümünü köpük düğümü için cam geometrisi olarak atayacaktır.

phxfdConnectLiqGeometry

İki düğüm seçildiğinde, bu komut şekil düğümünü köpük düğümü için sıvı geometrisi olarak atayacaktır.

phxfdSetPreviewLights

Seçilen ışıkları, seçilen simülatör düğümünün önizleme ışıklarına atayın.

phxQuickSetup -preset (-p) int

Seçilen nesneyle Hızlı Simülasyon kurun . Mevcut seçenekler şunlardır:

0 – yangın
1 – yakıt yangını
2 – patlama
3 – benzin patlaması
4 – yoğun duman
5 – soğuk duman
6 – sigara dumanı
7 – mum
8 – bulutlar

9 – musluk suyu
10 – süt
11 – bira
12 – kahve
13 – bal
14 – sıvı çikolata
15 – kan
16 – boyalar
17 – suda mürekkep
18 – şelale
19 – okyanus

phxfdHakkında

Yüklü olan Phoenix sürümünün tam listesini içeren bir dize döndürür.

phxfdTelif hakları

Phoenix ve kullanılan tüm üçüncü taraf yazılımların telif haklarını ve telif bilgilerini içeren bir dize döndürür.

 

 

Python Fonksiyonları #

başlangıç ​​düğümü  dizesi 

Belirtilen düğümün simülasyonunu başlatın.

Düğüm dizesini geri yükle  [ dosya adı  dizesi] 

Simülasyonu mevcut zaman kaydırıcısı konumundan geri yükleyin. Simülasyon durumunu yüklemek için bir dosya belirtebilirsiniz.

toplu düğüm  dizesi 

Belirtilen düğümün simülasyonunu toplu işlem modunda başlatın.

batchr düğüm  dizesi  çerçeve  tamsayı 

Simülasyonu toplu işlem modunda belirtilen bir kareden geri yükleyin.

duraklama

Simülasyonu duraklatın.

durmak

Simülasyonu durdurun.

önbelleği temizle düğüm  dizesi [ bayrak  tamsayı] 

Simülatör düğümünün çıktı önbelleğini temizleyin. Eğer bayrak 1 ise, yeniden simülasyon önbelleği temizlenecektir.

resetE

Görüntüleme ayarlarında emisyon grafiğini sıfırlayın.

resetD

Render ayarlarında diffuse grafiğini sıfırlayın.

sıfırlamaT

Oluşturma ayarlarında şeffaflık grafiğini sıfırlayın.

 

Toplu İşlem Betikleme #


Phoenix, toplu işlem modunda simülasyon yapabilir. Grafik kullanıcı arayüzünde olduğu gibi, aynı anda yalnızca bir simülasyon çalıştırılabilir. Toplu komutlar engelleme özelliğine sahiptir, yani tamamlandıktan sonra yürütmeyi betiğe geri döndürürler. Bu, bir simülatörün sonucuna bağlı diğer bir simülatör gibi daha karmaşık kurulumları betiklemek için kullanılabilir. Bu komutlar grafik kullanıcı arayüzünde de çalıştırılabilir, ancak etkileşimi etkili bir şekilde engeller. Başlatıldıktan sonra durdurulamazlar. Bununla birlikte, simülasyon biraz daha hızlı çalışabilir.

Toplu İşlem Fonksiyonları

phxfdBatchSim düğüm  dizesi 

Belirtilen düğümün simülasyonuna başlayın. Simülasyon bittiğinde komut geri dönecektir.

phxfdStartBatch düğüm  dize startFrame  int  endFrame  int 

phxfdBatchSim ile aynıdır  , ancak ikinci ve üçüncü argümanlar simülasyon için varsayılan başlangıç/bitiş karesini geçersiz kılar.

phxfdBatchRestore düğüm  dizesi   startFrame  int  

Simülasyonu toplu modda geri yükleyin. İkinci argüman, simülasyonun geri yüklenmesi gereken kareyi belirtir. Bu, zaman kaydırıcısını hareket ettirip “Geri Yükle” düğmesine tıklamaya benzer.

phxfdBatchRestoreStop  düğüm dizesi  startFrame int endFrame int 

Simülasyonu toplu modda geri yükleyin. İkinci argüman, simülasyonun geri yüklenmesi gereken kareyi belirtir. Üçüncü argüman ise geri yüklemenin bitiş karesini belirtir.

phxfdBatchResim düğüm  dizesi  bekleme  boolean değeri 

Simülasyona yeniden simülasyon modunda başlayın .  Bekleme seçeneği  doğruysa, Önbellek Bekleme özelliği açılır.

phxfdBatchResimRestore düğüm  dizesi  startFrame  int  bekleme  boolean 

Simülasyonu toplu modda geri yükleyin . İkinci argüman, simülasyonun geri yüklenmesi gereken kareyi belirtir. Bu, zaman kaydırıcısını hareket ettirip “Geri Yükle” düğmesine tıklamaya benzer. Bekleme doğruysa, Önbellek Beklemesi açılır.

 

Maya batch işlemini başlatmak için örnek komut satırı:

render -r vray -preRender “phxfdBatchSim(\”PhoenixFDSimulator1\”)” -noRender phx_simple.ma

Maya Batch’i başlatmak ve Phoenix simülasyonunu başlatmak için örnek komut satırı çağrıları:
cd “C:\Program Files\Autodesk\Maya2017\bin”

mayabatch.exe -file “D:\PHOENIX_QA\batchSimScene.ma” -command “phxfdBatchSim(\”PhoenixFDSimulator1\”)”

Seçenek Değişkenleri #


Maya Seçenek Değişkenleri

optionVar -sv  “PhoenixFD_cachePath”  string

Şablon yol adlarıyla kullanılacak geçerli önbellek yolunu ayarlayın.

optionVar -iv  “PhoenixFD_safemode”  number

Phoenix’i güvenli modda çalıştırın. Bu, yeni sahneler yüklenirken görüntü sorunlarını önlemek için gölgelendirme önizlemesini kapatacaktır.

Tarafından desteklenmektedir BetterDocs

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir