Napisano 18 Październik 200717 l 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:-)
Napisano 18 Październik 200717 l 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.
Napisano 18 Październik 200717 l Autor ł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ę?
Napisano 18 Październik 200717 l 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.
Napisano 19 Październik 200717 l Autor 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?
Napisano 10 Listopad 200717 l Autor Czy da się doinstalować biblioteki SDK maxa do Eclipse? Jeśli tak to w jaki sposób to zrobić?
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto