Zawartość dodana przez CgBartosz
- Pierwszy kontakt z 3ds Maxem
- Pierwszy kontakt z 3ds Maxem
-
Interview with Platige : The Making of Witcher 3 Wild Hunt Cinematic na itsartmag
http://www.itsartmag.com/features/interview-platige-making-witcher-3/#.UinzsMaFV8E
-
ZAPLACE za napisanie prostego skryptu
Zaktualizowałem kod http://max3d.pl/forum/showthread.php?p=1174384#post1174384
-
ZAPLACE za napisanie prostego skryptu
Skrypt znajduje się tutaj: http://max3d.pl/forum/showthread.php?p=1174384#post1174384
-
The Witcher 3: Wild Hunt - Killing Monsters Cinematic Trailer
Cześć, Gratki dla wszystkich uczestniczących w projekcie - Świetna robota ! Kilka słów o assetach i wymianie plików. Tak, jest autorski system do zarządzania assetami. Opiera się o centralne repozytorium metadanych sklejone z przeróżnymi softami pythonowym API. Na to repozytorium jest przepiękny web'owy frontend, pozwalający monitorować przeróżne aspekty projektów. Do tego dochodzi garść zasad, i doświadczenie nabyte przy poprzednich projektach. Do wymiany danych używamy własnych rozwiązań rozwijanych przez lata, ogólnodostępnych formatów ale także takich powstałych ad hoc (binarki, tekstowe,itp...). Jeszcze z takich technicznych informacji odnosnie twarzy. Do animacji twarzy użyliśmy Softimage Facerobot, Faceware, troche ręcznego rigowania, skryptowania i customowych deformerów (ICE,c++). Część ujęć była animowana w Maya. Pozdrawiam, Bartek Opatowiecki
-
Maya + ...... = dobry grafik 3d (animator/modeler/itp)
Kiedyś pracowałem z syryjczykiem (około 10 lat temu). Gość znał Maya na wylot, pisał skrypty w melu lepiej niż mówił po angielsku, renderował, teksturował, modelował, itp... Zrobił kiedyś taki rig który prawie sam chodził. Tutoriali w sieci nie było prawie wcale, YouTube'a i blogów też niezbyt wiele. Na pytanie skąd tak dobrze zna ten program, odpowiedział, że przerobił calutkiego helpa... Dwa razy. To była maya 4 i help był taki sobie...
-
Zastępowanie materiałów Maya na Mia_x_passes z automatu?
moze podlacz sobie scene bez materialow przez referencje do jakiejs pustej. zaladuj materialy i podepnij a w kazdej kolejnej iteracji podmianiaj te zreferencjonowana scene. Informacje o polaczeniach miedzy nodami pozostana w scenie glownej (te do ktorej ladujesz referencje). Jesli pomiedzy iteracjami nazwy obiektow pozostana niezmienne to wszystko bedzie pieknie działac.
- ipt > dwg
-
Kurs tworzenia animacji i efektów specjalnych od Platige Image
Kilka dni temu kroopson modelowal w Blenderze proxy do rigow. Sam kiedys stosowałem Blendera jako "pelt mapper" kiedy jeszcze w innych programach rozwiazanie to nie bylo dostepne.
-
problem ze skryptem
To co wkleilem nie zmienilo zachowania a jedynie forme.
-
problem ze skryptem
macroScript HVCutter category: "HVTools" ( fn centerPivotsByPattern nodes = ( for i in nodes do ( if (matchpattern i.name pattern:"*cutter") == True do ( CenterPivot i ) ) ) /* method argument: 1 - instance, operand is an instance of the original 2 - reference, operand is a reference to original node 3 - copy, operand is a copy of original node 4 - move, original node should be deleted */ fn createIntersectionMesh method &nodesCollection = ( cutter = copy nodesCollection[1] deleteitem nodesCollection 1 cutter.name = "cutter" proCutter.CreateCutter #(cutter) method on on off on on proCutter.AddStocks cutter nodesCollection method 1 proCutter.setPlanarEdgeRemoval cutter 2 delete cutter ) input = selection as array createIntersectionMesh 4 input centerPivotsByPattern (objects as array) )
-
animacja kabli, przewodów, elastycznych połączeń 3ds max
stworz krzywa nurbs i przyskinuj konce do nulli. Wlacz krzywej "render in viewport".
-
[MaxScript] Igonowanie pustych klatek aniamcji
W efekcie ubocznym mozna pisac do pliku jesli zamienic stringstream na file i drukuje propertiesy. ( struct PrintNodeValues ( public nodesArray, frameArray, dataStream, private fn _printValuesByType _node _frame = ( propNames = getPropNames _node format "\tslidertime = %\n" _frame to:dataStream for propName in propNames do ( at time _frame ( propValue = getproperty _node propName format "\t$.% = %\n" (propName as string) propValue to:dataStream ) ) ), on create do ( for _frame in frameArray do ( for _node in nodesArray do ( format "\nnodeInfo\n" to:dataStream format "\t%\n" _node to:dataStream format "\tsuperClass:%\n" (superclassof(_node)) to:dataStream format "\tClass:%\n" (classof(_node)) to:dataStream format "transforms:%\n" _node to:dataStream _printValuesByType _node.controller _frame format "properties:%\n" _node to:dataStream _printValuesByType _node _frame ) ) ) ) nodesArray = selection as array frameArray = #(0f,5f,10f,15f,20f) dataStream = stringstream "\n" PrintNodeValues nodesArray frameArray dataStream print (dataStream as string) ) Dla splajna taki wynik daje w listenerze: nodeInfo $Line:Line002 @ [14.202627,-7.950639,0.000000] superClass:shape Class:line transforms:$Line:Line002 @ [14.202627,-7.950639,0.000000] slidertime = 20f $.position = [14.2026,-7.95064,0] $.rotation = (quat 0 0 0 1) $.scale = [1,1,1] properties:$Line:Line002 @ [14.202627,-7.950639,0.000000] slidertime = 20f $.steps = 6 $.render_renderable = false $.render_mapcoords = false $.render_viewport_thickness = 1.0 $.render_viewport_sides = 12 $.render_viewport_angle = 0.0 $.render_displayRenderMesh = false $.render_useViewportSettings = false $.render_displayRenderSettings = true $.thickness = 1.0 $.sides = 12 $.angle = 0.0 $.renderable = true $.mapcoords = false $.viewport_thickness = 1.0 $.viewport_sides = 12 $.viewport_angle = 0.0 $.displayRenderMesh = false $.useViewportSettings = false $.displayRenderSettings = true $.optimize = true $.adaptive = false $.render_viewport_length = 6.0 $.render_viewport_width = 2.0 $.render_viewport_angle2 = 0.0 $.render_rectangular = false $.render_viewport_rectangular = false $.render_aspect_locked = false $.render_viewport_aspect_locked = false $.render_auto_smooth = true $.realWorldMapSize = false $.render_thickness = 1.0 $.render_sides = 12 $.render_angle = 0.0 $.render_width = 2.0 $.render_length = 6.0 $.render_angle2 = 0.0 $.render_threshold = 40.0
-
Selekcja poligonów o podobnej powierzchni
Czy napisalem go w odpowiedzi na twoj post ? Tak, 10 minut to zajelo. To super proste, co zreszta widac po kodzie.
-
Selekcja poligonów o podobnej powierzchni
Moze ten skrypcik pomoze struct SelectFacesByArea( public polyMesh = undefined, minAreaVal = .001, maxAreaVal = 1., private _facelist = #(), fn _SelectFaces = ( for i = 1 to polyMesh.numfaces do ( areaVal = polyop.getFaceArea polyMesh i if areaVal = minAreaVal do ( append _facelist i ) ) polyop.setFaceSelection polyMesh _facelist ), on create do ( if polyMesh != undefined do ( if (classof polyMesh) == Editable_Poly then ( _SelectFaces() )else print "convert to Editable_Poly" ) ) ) SelectFacesByArea $ .5 1.
-
ms - łączenie z socket serwerem - wysylanie odbieranie stringow
Gdybys przepisal kod z ponizszego adresu na maxscript, mogloby sie udac. http://csharp.net-informations.com/communications/csharp-server-socket.htm Mozesz takze sprobowac uzyc "named pipes". Za pomoca named pipes udalo mi sie posylac komunikaty do maxa wprost z konsoli pythona. Wymagalo to napisania klienta do pythona w formie pluga i serwera maxowego tez w formie pluga. Jedyny problem ktory sie pojawil to blokowanie aplikacji 3dsmax po uruchomieniu serwera.
-
Nieskończony czas działania kontrolera
Możesz powtarzać tę animacje włączając funkcję "out of range" kontrolera i ustawic wartość "after" na relativeRepeat, czyli powstanie zapętlona kopia tej proceduralnej. Przy 500 klatkach może być widoczna powtarzalność... Nadal jednak animacje możesz kontrolowaćustawieniami waveform controllera. _cnt = $.controller.position.controller.x_position.controller enableORTs _cnt true setAfterORT _cnt #relativeRepeat
-
Kopiowanie wybranegozakresu klatek kluczowych z jednego obiektu do drugiego w 3ds max
te druga w czasie animacje mozna zapisac menu Animation>Save Animation - zaznaczyc 'segment' i kliknac ustawic zakres do zapisania. Nastepnie na te pierwsza kamere menu Animation>Load Animation 'insert' i w pole 'at' mozna wstawic koncowa klatke animacji aby tam wyladowal poczatek wcztywanych kluczy. W ten sposob mozna zapisac wszystkie animowalne atrybuty kamery.
-
drimagine - jacek tuminski demoreel 2011
Sadze ze bardzo dobrze zrobiles ! Osobiscie usunalbym jeszcze te glowe na nogach ze stilki z modelami... ;)
-
L-systemy dla maya
W maxsckrypcie udalo sie time:11.731 s
-
L-systemy dla maya
Na moim kompie takie cos: maxscript i obiekty jako referencje = time:28.808 s 8 iteracji GeneratorLSystemuN.
-
L-systemy dla maya
moje 3 grosze :) zamiast tego: if self.aks[i]=='F': drzewo=drzewo+self.reg[0] elif self.aks[i]=='Z': drzewo=drzewo+self.reg[1] elif self.aks[i]=='X': drzewo=drzewo+self.reg[2] elif self.aks[i]=='C': drzewo=drzewo+self.reg[3] elif self.aks[i]=='V': drzewo=drzewo+self.reg[4] elif self.aks[i]=='B': drzewo=drzewo+self.reg[5] elif self.aks[i]=='N': drzewo=drzewo+self.reg[6] elif self.aks[i]=='M': drzewo=drzewo+self.reg[7] ... mozesz zastosowac taki sposob: _dict = {'F':0,'Z':1,'X':2,'C':3,'V':4,'B':5,...} _index = self._dict[self.aks[i]] drzewo=drzewo+self.reg[_index] _dict moze byc atrybutem klasy. Troche to poprawi czytelnosc kodu. unikaj dodawania stringow w ten sposob: drzewo = drzewo+ jakisstring Szczegolnie w petlach moze byc wolo. Szybciej jest tak: strinsArr = [str(i) for i in xrange(0,1000)] #list comprehension drzewo = ''.join(strinsArr) ...takze xrange jest szybsze od range. tu zamiast tak: if (znak=='+'): pm.rotate ('pomocnik',[kat,0,0],relative=True,objectSpace=True) elif (znak=='-'): pm.rotate ('pomocnik',[-kat,0,0],relative=True,objectSpace=True) elif (znak=='^'): pm.rotate ('pomocnik',[0,0,kat],relative=True,objectSpace=True) elif (znak=='&'): pm.rotate ('pomocnik',[0,0,-kat],relative=True,objectSpace=True) elif (znak==' pm.rotate ('pomocnik',[0,kat,0],relative=True,objectSpace=True) elif (znak=='>'): pm.rotate ('pomocnik',[0,-kat,0],relative=True,objectSpace=True) mozna chyba tak: def GetVector(_key,_angle): _dict = {'+':[_angle,0,0],'-':[-_angle,0,0], '^':[0,0,_angle],'&':[0,0,-_angle], '':[0,-_angle,0]} return _dict[_key] def RotateNode(_nodeName, _key, _angle, relative=True, objectSpace=True ): pm.rotate(_nodeName,GetVector(_key,_angle),relative=relative,objectSpace=objectSpace) i wywolujesz: RotateNode('pomocnik', _key, _angle ) Nie moglem sie powstrzymac :D Mam nadzieje, ze to tez troche pomoze w Twojej pracy magisterskiej :)
-
L-systemy dla maya
Przepisalem sobie to na maxscript bo nie mam majki i cos tam sie generuje. Ciekawszy wydaje sie GeneratorLSystemuN. Bardzo fajne !! Uwagi mam tylko do kodu ale rozumiem, ze nie jest skonczony ,wiec sie z nimi wstrzymam :) Mozesz zoptymalizowac na przyklad klase ObiektStos poprzez uzycie __slots__ pythonowych. Znajdziesz opisy w sieci. Trzymam w ObiektStos tylko macierz transformacji przez co zniknelo ze 20 linijek kodu
-
Alembic - nowy otwarty format od Lucasfilm oraz Sony Pictures Imageworks
Tego nie wiem napewno, na razie biore sie za kompilacje biblioteki... to o czym mowisz supportuje sam hdf5, alembic opiera sie na tym formacie i nie mam pojecia co panowie w robia zanim dane trafia do pliku, stad watpliwosc a moze raczej ciekawosc. Pozdrawiam.