본문 바로가기
3DsMax/bug

맥스에서 이유 없이 파일 용량이 커지거나 저장시간이 오래걸릴때.

by biped 2012. 5. 7.


1) Max_MotionClip_Manager 버그


예를 들어, 

ctrl+N (New Scene) 으로 한 후  merge 를 사용해서 오브젝트를 불러왔습니다.

그런데  파일을 합성 후에 적은 오브젝트인데도 저장하면 용량이 커지고, 오브젝트를 삭제해도 용량이 줄지 않는 상황이라면

F11 단축키를 눌러서 MAxScript Listener에 아래의 명령어를 입력하여 실행 시킵니다.


clean.zip


t=trackviewnodes;n=t[#Max_MotionClip_Manager];deleteTrackViewController t n.controller;gc()



(참고) 

우선 트랙뷰를 확인해서 쓸데 없이 증가된 노드를 확인한다.

문제의 또 다른 트랙뷰의 노드를 제거 하고 싶다면 '# Max_MotionClip_Manager' 부분에 다음 내용으로 대체하면 됩니다.


#Video_Post    - TrackViewNode 

#Global_Tracks   - TrackViewNode

#Biped    - TrackViewNode

#Anim_Layer_Control_Manager   -Controller

#BatchRenderManager   -TrackViewNode

#SceneStateManager    -TrackViewNode


 

예:  t=trackviewnodes;n=t[#Anim_Layer_Control_Manager];deleteTrackViewController t n.controller;gc()



위 내용과 비슷하지만 트랙뷰의 노드 자체를 제거하는게 아닌 노드안에 내용만 삭제하는 명령.


(getproperty trackviewnodes.Anim_Layer_Control_Manager.controller #animlayers).count        


-->  노드(예. Anim_Layer_Control_Manager)의 안에 있는 갯수를 확인할때.


(getproperty trackviewnodes.Anim_Layer_Control_Manager.controller #animlayers).count=0


---> 노드(예. Anim_Layer_Control_Manager)안의 갯수를 0 으로 만든다.



그런 후 파일을 저장하고 맥스를 종료합니다. 맥스를 다시 시작하기 전에 os 작업관리자의 프로세스 안에서 3dsmax.exe 가 실행 중이면 끕니다.  

이 문제는 의도하지 않은 trackview 에 노드(또는 컨트롤러)를 증가시켜서 용량증가의 원인이 됩니다.

( 이 스크립트 명령을 사용할 때 MotionClip Manager, trackview controller 등이 없을 때는 에러  -- Unknown property: "controller" in undefined 의 내용이 발생하기도 합니다. 그러면 아래 추가 내용중에 다른 방법을 사용해봅니다.)



2) MixerReftargs 버그 


 씬 파일 증가 또는 저장시간이 오래 걸릴 경우.

            

RemoveMixerReftargs.ms




for i = 1 to theMixer.numMaxMixers() do

(

    theMixer.removeMaxMixer 1 false 1


)



           

removeNoteTrack.ms




trackIndex = 1


m = trackViewNodes[trackIndex]

while (m != undefined) do

(

print trackIndex

ct = numNoteTracks m

id = ct

for i = 1 to ct do

(

tr = getNoteTrack m id

deleteNoteTrack m tr

id = id - 1

ith = mod i 200

if  ith  < 1 then Print id

)

trackIndex = trackIndex + 1

m = trackViewNodes[trackIndex]

)


     

3trackViewNodes 버그 


trackview node에 의도하지 않은 Retimer 가 수백,수천개가 증가해 파일 크기가 커질때.



● 모든 Retimer 트랙 삭제:


t=trackviewnodes;n=t[#Retimer_Manager];deleteTrackViewController t n.controller;gc()



●빈 Retimer 만 삭제:


nrt=RetimerMan.numRetimers

for i = 1 to nrt do

(

j=nrt-i+1

n=RetimerMan.GetNthRetimer j

if n!=undefined then

(

if n.nummarkers==0 then

(

RetimerMan.DeleteRetimer j

)

)

)


(출처: http://area.autodesk.com/blogs/maxstation/n170-filebloat-removing-lots-of-empty-retimers)

=======================================================================================

아래 내용도 참고합니다.


■ 이유 없이 파일 크기가 커질때 해결방법. (3ds max 6,7 구버젼 사용시)


1)       3ds 형식 파일을 내보낸 다음 다시 New Scene으로 읽습니다.  (.max->.3ds) 

                 (3ds max를 다시 시작할 필요가 생깁니다.)


              ※ 3ds 형식의 특징은 다음과 같습니다.

  1. .3 ds 포맷이 지원하는 개체의 최대 면의 수는 64k입니다.

  2. 1 다각형이 지원하는 Map Channnel는 1 개뿐입니다.

  3. 3ds 포맷이 지원하지 않는 종류의 재질과 맵이 있습니다.

  4. 3ds 형식은 메쉬에서만 지원합니다. 기타 모든 종류의 객체와 기존의 모디파이어 스택은 export 되지 않고 손상됩니다.


2) · 파일 메뉴에서 merge를 선택, 문제의 장면에 있는 모든 요소를​​ merge 합니다.

  · 파일 메뉴>references> XRef Objects> 닫기

  · 파일 메뉴>references> XRef Scenes> 닫기

  · MAXScript Mini Listner 또는 F11번을 눌러 MAXScript Listnener를 실행시켜 gc () 를 입력하고 Enter를 누르십시오. 

                  -  이제 가비지 수집기(Garbage Collection) 기능을 발동합니다. (이것은 동시에, 재시도 / 취소 버퍼를 비웁니다.)

  · 파일을 저장합니다.


3)          freescenebitmaps()   텍스쳐 메모리 청소 (메모리에 올려져 있는 비트맵을 제거 )

             clearUndoBuffer()     Undo/Redo 기억내용 제거



■  리액터 사용에 의한  용량 증가    

 

               유틸리티 - reactor - collisions 롤아웃 메뉴 - clear 실행


 biped 의 copy/paste 기능의 copied postures나 copied pose에 데이타가 쌓여서 용량이 증가할 수도 있다.




4그 외 각종 플러그인 및 스크립트 


Cleaner 위의 내용들을 쉽고 간편하게 사용할 수 있도록 만들어진 스크립트.

http://www.scriptspot.com/3ds-max/scripts/cleaner

-처음 설치시 작동하나 다음에 맥스를 재시작하는 경우 cleaner 스크립트를 사용할 수 없는 경우가 있다.  다음 방법을 따른다.


(설치법)

1. cleaner_v25.zip 파일 압축을 푼다. 

( 주의할 점은 한 폴더안에 파일이 같이 있어야 한다. 'deactivated' 폴더안의 스크립트들을 '... \clean'안에 넣으면 더 많은 기능을 이용할 수 있게 된다.)

2. 맥스를 실행하고 Scripting 메뉴> New Script 나 Maxscript Editor 항목을 클릭한다.

3. 다음 내용을 넣고 스크립트창에서 Tools 메뉴 > Evaluate All (Ctrl+E)을 실행한다.

  ( 다음 내용중에 cleaner.ms 파일 위치 경로는 수정이 필요한다.)

------------------------------------------------------------------------------------------------------

macroScript oldway category:"# Scripts" tooltip:"Cleaner 2.5" buttonText:"Cleaner" ( on execute do fileIn "C:\Program Files\Autodesk\3ds Max 2014\scripts\Cleaner\cleaner.ms" )


-------------------------------------------------------------------------------------------------------


4. Customize > Category: "# Scripts" > Cleaner 을 찾아 툴바에 버튼을 만든다.

5. 다시 맥스안에서 Run Script 을 이용하여 cleaner.ms 을 찾아 실행한다. 반응은 없지만 앞서 툴바에 등록된 Cleaner 버튼으로 실행하고 사용하면 된다.  



 Software 의 Forensic 바이러스 또는 악성 스크립트를 찾아 삭제하는 기능이 있음.  Free 

https://www.sinisoftware.net/index.php?option=com_content&view=article&id=12&Itemid=195



<사용하지 않는 맵을 삭제해야 할때.>


Relink Bitmaps

https://www.colinsenner.com/relink-bitmaps/


project manager

https://3d-kstudio.com/product/project-manager/







RemoveMixerReftargs.ms
0.0MB
clean.zip
0.0MB
removeNoteTrack.ms
0.0MB

댓글