View Categories

Öncelik ve Uygulama Sırası

4 dakika okuma

İçindekiler

Miktar Değişikliği de dahil olmak üzere Çıktı tipi alt operatörler, Öncelik sırası ve İşlem sırası tanımlama seçeneklerine sahiptir. Karmaşık kurulumlar oluştururken bu seçeneklerin farkında olmak önemlidir.

Veri değiştirme ve işleme sırası, Çıkış alt operatörleri tarafından tanımlanır. Çıkış alt operatörleri veri değiştirme işlemini yönlendirir. Veri akışında kendilerinden üstte bulunan alt operatörlerden parçacık verilerini çeker ve bu verileri parçacık özellikleri olarak ayarlar.

Aynı Yürütme Sırası değerine sahip çıkış alt operatörleri aynı giriş verileriyle ilgilenir. Yürütme Sırası değeri aynı olduğunda, Öncelik Sırası değeri, çıkış alt operatörlerinin verileri yukarı akıştan çekme sırasını tanımlar. Tüm veriler çekildikten sonra, veriler parçacık özelliklerine uygulanır.

Alt operatörlerin farklı Yürütme Sırası değerleri varsa, aynı Giriş alt operatöründen veri çekseler bile farklı giriş verileriyle ilgilenebilirler. Bunun nedeni, daha düşük yürütme sırasına sahip bir Çıkış alt operatörünün bazı parçacık özelliklerindeki verileri değiştirebilmesidir. Daha yüksek yürütme sırasına sahip çıkış alt operatörü veriyi çektiğinde, bu veriler zaten değiştirilmiş olur.

Şu örneği ele alalım: Parçacıklar bir olaya dahil olduğunda, tüm yeni parçacıklar için başlangıç ​​değerlerini hesaplamanız gerekir. Ardından, her karede (parçacığın olaya yeni dahil olup olmamasına bakılmaksızın) parçacık özelliklerini değiştirmek istersiniz ve bu değişiklik sırasında tüm parçacıklarda başlangıç ​​değerlerinin ayarlanması gerekir.

Bu senaryoda iki veri akışınız var: birinci akış başlangıç ​​değerlerini hesaplıyor; ikinci akış ise parçacık özelliklerini değiştiriyor. Birinci akışın Çıkış alt operatörünün Yürütme Sırası=1 olmalı ve büyük olasılıkla filtre girişi Standart Giriş olarak ayarlanacaktır.Yeni Olay. İkinci akıştaki Çıkış alt operatörünün Yürütme Sırası=2 olmalıdır.

Başka bir senaryoyu ele alalım: Tüm parçacıklardaki hız verilerini analiz etmek istiyorsunuz ve bazı koşullara bağlı olarak, hızları farklı şekillerde değiştirilecek iki parçacık alt kümesi tanımlamak istiyorsunuz. Bu senaryo için, aynı yürütme sırasına sahip iki Çıkış alt operatörü kullanmanız gerekir. Bu şekilde, her Çıkış için başlangıç ​​giriş hız değerlerinin aynı olmasını garanti edersiniz.

Bu arada, Miktar Değiştirme alt operatörü parçacık sayısını değiştirdiği için, İşlem Emri değerini başka hiçbir alt operatörle paylaşamaz. Programdaki güvenlik önlemleri bunu yapmanızı engeller.

Ayrıca, Yürütme ve Öncelik Sırası grubu da Önce/Normal/Sonra radyo düğmelerine sahiptir. Bu seçenek, işlem sırasını daha üst düzeyde tanımlar. Önce olarak ayarlanırsa, bu çıktı mevcut olaydaki herhangi bir operatör yürütülmeden önce yapılır. Normal olarak ayarlanırsa, çıktı alt operatörü aynı olaydaki diğer operatörler arasında, normal sırayla yürütülür. Son olarak ayarlanırsa, çıktı, bu parçacık sistemindeki tüm operatörler ve tüm testler bu entegrasyon adımı için işlerini tamamladıktan sonra işlenir.

Ön/Normal/Son kullanım örneklerini görmek için, ekli CollisionAsBody.max dosyasını açın.

Bu örnek, “ucuz ve hızlı” tam gövde çarpışması üretmek için Veri operatörünü kullanır. Muhtemelen bildiğiniz gibi, 3ds Max’teki parçacık sistemleri , çarpışmalar ve saptırıcılar açısından parçacıkları nokta varlıklar olarak ele alır. Bu nedenle, bir parçacığın görünür boyutta bir şekli varsa, şekil saptırıcı yüzeyleri deler ve bu da genel görsel efekti bozabilir. Örnek, parçacık konumunu iç içe geçme miktarı kadar kaydırmak için parçacık verilerinin nasıl bağlanacağını gösterir.

Öncelikle, penetrasyonu önlemek için gereken konum kayması gibi gerçek değerleri depolamak üzere özel bir veri kanalı oluşturuyoruz. Tüm yeni parçacıklar için bu değeri sıfır olarak başlatıyoruz—bkz. veri bloğu 01.

Diğer tüm operatörler ve testler işlerini tamamladıktan sonra, Post aşamasında nüfuz miktarını ve parçacık konumunun ofsetini hesaplıyoruz. Bu şekilde, nüfuzu önlemek için parçacık konumları ayarlanır ve parçacıklar render için hazır hale gelir. Sağ taraftaki Çıktı operatörleri Post aşamasında işlerini yaparlar.

Ardından, Ön aşamada, çarpışma testlerinin hiçbir şey olmamış gibi çalışmalarına devam edebilmesi için parçacıkları eski, kayma olmayan konumlarına geri taşımamız gerekiyor.

Tarihe Bağlı #

Parçacık sistemleri doğası gereği geçmişe bağımlıdır. Başka bir deyişle, örneğin 100. karedeki bir parçacık sisteminin durumunu belirleyebilmek için, yazılımın ilk parçacığın doğduğu andan itibaren önceki tüm karelerdeki durumları hesaplaması gerekir. Bunun nedeni, parçacık özelliklerindeki değişikliklerin (örneğin, parçacıkların konumları) hız gibi diğer parametrelerdeki sürekli değişiklikler nedeniyle birikmesidir.

Ancak, belirli kurulumlarda bazı parçacık özellikleri geçmişe bağlı değildir ve parçacıkların mevcut durumundan hesaplanabilir. Örneğin, parçacıkların “kameraya bakıyorlarsa” veya parçacık hızına bağlı olarak yönelimleri. Burada parçacığın yönelimi, kameraya bakarken olduğu gibi parçacık konumuna veya parçacık hızına bağlıdır. Bu durumda, parçacıkların mevcut yönelimini hesaplamak için parçacıkların tüm geçmişini bilmenize gerek yoktur; sadece mevcut hızlarını veya konumlarını bilmeniz yeterlidir.

Bu anlamda, parçacık yönelimini hesaplayan operatör geçmişe bağımlı değildir. Sistemin mevcut kareye ulaşmak için önceki tüm karelerden geçmesi sırasında operatörün hiçbir şey yapmasına gerek yoktur. Operatörün yalnızca son kare üzerinde çalışması; son karedeki parçacıkların konumunu/hızını analiz etmesi ve karşılık gelen parçacık yönelimini hesaplaması gerekir.

Çıkış alt operatörünün sonucunun parçacıkların geçmişine bağlı olmadığından eminseniz, Geçmişe Bağımlı seçeneğini kapatabilirsiniz. Bu, Veri operatörünün yalnızca son karede çalışmasına neden olarak genel hesaplamaları hızlandırabilir.

Tarafından desteklenmektedir BetterDocs

Bir yanıt yazın

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