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. |
|
t <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):
PYTHON 2 (Maya 2020 ve daha eski sürümler için kullanılır):
MEL:
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 ( x float, y float z float) boşalt float [ temp float] [ smoke float] [( vx float, vy float, vz float)] [( u float, v float, w 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)] [( u float, v float, w 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 . |
|
( x float, y float, z 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 ( x float, y float z 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 ( x float, y float z 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 ( x float, y float z 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 ( x float, y float z 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 ( x float, y float z 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 ( x float, y float z 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 9 – musluk suyu |
|
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. |
