Obywatel Napisano 18 Październik 2007 Napisano 18 Październik 2007 Joł skryptowe ziomy. Załączam efekt skryptu jaki sobie dziś napisałem i od razu pytanie: czy ten cały maxscript jest taki mało optymalny, czy ja coś źle popisałem? :> animate on ( for t in 0 to 100 do ( at time t ( for i=1 to (polyOp.getNumVerts $Ziemia) do ( v1=polyOp.getVert $Ziemia i; for j=1 to (polyOp.getNumVerts $Kula) do ( v2=polyOp.getVert $Kula j; d=sqrt((v2[1]-v1[1])^2+(v2[2]-v1[2])^2+(v2[3]-v1[3])^2); if(d ( polyOp.moveVert $Ziemia i [0,0,-(1-abs(d))]; --print("Przesunieto"); )--if d )--for po vertexach kuli )--for po vertexach ziemi )--at time t )--for t )--animate Tutaj te pętle wykonują się dosyć dużo razy (100 klatek * 1 681 vertexy ziemi * 482 v. kuli :> ) No ale w gruncie rzeczy to są proste instrukcje, a mi maxa przywiesiło na jakieś dobre 7 minut. Co do samego skryptu to tylko powiem, że to takie pierwsze koty za płoty. Czas w maxie jest dyskretny, wiec jakby tą kulkę szybciej przesunąć to by fajne rzeczy się działy d:-)
dokturpotfor Napisano 18 Październik 2007 Napisano 18 Październik 2007 masz 81 milionow wykonan najbardziej zagniezdzonej petli. getVert tez ma jakas implementacje do tego sqrt ktora jest operacja bardzo wolna wszystko masz na wartosciach zmiennoprzecinkowych wykonujesz moveVert ktorego zlozonosci obliczeniowej nie znasz, wiec skad podejrzenie ze to prosta operacja poza tym maxscript to interpretowany jezyk wysokiego poziomu wiec tak na prawde duzo wiecej moze sie dziac pod maska niz masz napisane w skrypcie. jak zalezy ci na wydajnosci to lepiej przerzuc to do c i skompiluj z api 3d studia. pluginy dzialaja duuuzo szybciej.
Obywatel Napisano 18 Październik 2007 Autor Napisano 18 Październik 2007 łooo a jak się to robi? Poszperałem trochę w manualu i w necie ale dokumentacja do maxscripta to deficytowy towar. Masz jakiś tutorial, który opisuje całą procedurę?
dokturpotfor Napisano 18 Październik 2007 Napisano 18 Październik 2007 no hej sdk (software developers kit) powinienes miec z instalka max'a. To ogolnie rzecz biorac pakiet bibliotek i plikow naglowkowych ktore specyfikuja API (application programming interface) maxa... czyli na nasze: jak programy maja sie z nim komunikowac. Pluginy maxa to nic wiecej jak zwykle dll'ki skompilowane z odpowiednimi naglowkami (zeby max wiedzial gdzie szukac twoich funkcji ktore buduja plugin, w skrocie)... oprocz sdk powinienes miec jeszcze jakies srodowisko programistyczne (ja polecam np Eclipse IDE, z obsluga c/c++ CDC (open source), albo darmowa biedna wersje visual studio od microsyfa). Teraz piszesz normalnie plugina w c/c++, kompilujesz go z bibliotekami z SDK max'a i wrzucasz do katalogu plugins czy gdzie tam sobie trzymasz te badziewia i smiga. Rzecz jasna troche to wyzsza szkola jazdy niz pisanie skryptow, ale i wydajnosc ze 100 razy lepsza :) aaa... nie powinna cie interesowac dokumentacja dla maxscripta tylko w tym wypadku sdk ma swoja wlasna, calkiem sensowna. 1
Obywatel Napisano 19 Październik 2007 Autor Napisano 19 Październik 2007 Ojej, a ja już myślałem, że się czegoś nauczyłem ;-) No spook, dzięki za informacje. Aha czyli piszę normalnie w C++. A odwołania do maxowych metod (np. polyOp.getVert) dużo różnią się składnią? Pytam bo akurat nie będę miał możliwości sprawdzenia tego przez weekend. No i jeszcze jedno :> Jak przerwać wykonywanie się skryptu?
Obywatel Napisano 10 Listopad 2007 Autor Napisano 10 Listopad 2007 Czy da się doinstalować biblioteki SDK maxa do Eclipse? Jeśli tak to w jaki sposób to zrobić?
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się