1. XSI,ICE 포럼
  2. Z-Brush
  3. 합성포럼

※질문은 포럼(QnA)에 하세요.
※질문 전 통합검색 필수.
※타이틀 제작시 Copyright 넣으세요.
오늘:
0
어제:
0
전체:
443,160

보통 Modo에서 인체 모델링을 한다고 하면

모델링 도중에 면을 부드럽게 봐야할때 Tab를 클릭하면 XSI의 Page up처름 면이 부드럽게 됩니다.

그리고 한번 더 Tab를 클릭하면 XSI의 Page Down처름 다시 원래의 상태로 돌아오죠.

그런식으로 Tab키를 눌러가며 모델링을 하게 되는데요.

3D프로그램은 마야부터 시작했던 저로써는 Modo의 Tab키는 상당히 편리하게 느껴졌던 부분입니다.

그래서 Cinema 4D에서 모델링할때 역시 섭디비젼이 적용되는것을 Tab로 할당하고 사용중입니다.

일단 키 자체가 크고 손이 쉽게 가는곳이라 중간 중간 눌러주기가 아주 쉽기 때문이죠.

 

그런데 XSI를 시작한지 어느덧 한달정도가 되어가는 지금 저는 Page Up과 Page Down으로 사용중입니다.

혹시 유저분들은 그렇게 사용하시나요? 아니면 따로 스크립트를 만들어 쓰시는지요?

위치도 많이쓰는 S키 주위와 멀리있다보니 키의 위치가 너무 비효율적인듯해서요.

 

XSI에서 Page Up을 한번누르면 면이 좀 덜 부드럽습니다. 두번쯤 눌러야 보기좋은 상태가 되죠.

Modo라는 프로그램에서 Tab키를 한번 눌렀을때 부드러운 정도는 Xsi에서 Page Up을 두번정도 누르는 것과 비슷하게 보이는데요.

그래서 요점을 말씀드리자면 XSI에서 Tab키에 단축키를 할당해서 토글모드로 Page Up,Down을 왔다 갔다 하고싶습니다.

...........................................................................................................................................................................................................

Tab클릭

IncreaseSubdivision
IncreaseSubdivision

 

Tab클릭

DecreaseSubdivision
DecreaseSubdivision

...........................................................................................................................................................................................................

위와같은 식으로 말이죠.

두단계가 어렵다면 한단계만이라도 Tab키를 눌러서 가능하게 하고 싶습니다.

아마 스크립트로 작성해야 할듯한데 궁금합니다.

어떤 방법이 가장 좋을까요?

 

분류 :
Modeling
조회 수 :
4918
등록일 :
2009.05.24
23:54:01
엮인글 :
http://www.xsiuser.com/xe/41586/145/trackback
게시글 주소 :
http://www.xsiuser.com/xe/41586

생활보호대상자

2009.05.25
11:04:23

음,,질문에 대한 답변은 아니지만,,

기본 xsi 단축키는 키패드 +, -로 되어 있습니다,,

아마, 대부분 이 상태로 쓰시지 않을까 싶은데요,, ^^;;

샤이닝

2009.05.25
14:16:57
그렇군요.  XSI로 바꿔서 적응하려고 노력중입니다. 많이 도와주세요.^^

신선

2009.05.25
11:52:25

보통 모델링할때 서브디비젼 레벨을 자주 왔다갔다 하는 편이 아니어서 단축키 불편함을 못느끼고 있습니다.

샤이닝님께서 자주 왔다갔다하신다면 로폴과 섭디 두가지모드를 동시에 시각화 해주는 모드(polymesh hull)가 있습니다..

참고 이미지 올립니다.  이미 아시는거라면 패스~ ^^

polymesh_hulls.jpg
첨부 :
polymesh_hulls.jpg [File Size:279.4KB/Download4]

샤이닝

2009.05.25
14:19:45

앗!..알고는 있지만 답글 감사합니다.^-^;;

그리고 저는 주로 유기체모델링을 주로 하다보니 섭디비젼으로 왔다갔다 하는 빈도가 많아서 많더라구요.

그래서 답답함을 조금 느끼게 되는것같습니다.

CGnDEV

2009.05.25
13:14:18

아... 원하시는게 tab키를 2번누르기전가지는 인크리즈, 다시 3번째에서 4번째 누르는건 디크리즈를 하시려는거군요.

스크립트로 하는 방법 밖에 없을 듯 합니다.

아니면.. + , - 에 대한 단축키를 S키 근처로 옮기는게 좋지 않을까요?

그래픽작업이 오래걸리고 운동도 부족할텐데..

그냥 S키와 멀리있는 +, - 키를 쓰시는것을 추천합니다. 팔 운동이라도 해야죠 ^^

완전 혼자 작업하실때는 커스터마이징 하시는게 좋지만, 아시겠지만 너무 커스터마이징 하시려는거도 나중에 좀 불편할수있습니다.

참고 하시구요.. 요청 하시면 말씀드린 기능 만들어드릴께요 ^^ 지금은 시간이 안되네요. ㅜㅜ

샤이닝

2009.05.25
14:24:58

가끔 저도 멀리있는건 그냥 그대로 쓰자라는 생각을 합니다 ^^

역시 나와같은 생각을 하는 사람들은 세상에 많다는 것을 또 한번 느끼게 하네요. ^-^;

 

혹시 설명에 착오가 있는것같아서 다시 말씀드리자면.

Tab키를 한번 눌렀을때 + 키를 두번 누른것과같은 적용이 되고,

다시 Tab키를 한번 더 누르면. - 키를 두번 누른것처럼 원래대로 돌아오게 하고 싶습니다.

일단 제가 XSI를 시작한지 너무 얼마 안되다보니 제작하기가 어렵네요. 제작하는데 힌트라도 주시면 시도해볼텐데요.

 

얼마전에 True False로 이뤄지는 한가지 명령어의 토글은 if, then,else로 만들어주셔서 잘 적용하고 있는데요

이건 하나의 기능을 두번 반복하고 또다른 기능을 두번 바복하는것을 서로 토글해야하니까 어떻게 만들지 어렵습니다.

시간이 되실때 꼭 좀 부탁드리겠습니다. 조금 늦더라도 기다리겠습니다.

앞으로도 스크립트 만드는데 궁금한 사항이 있으면 많은 도움 부탁드립니다.

 

 

생활보호대상자

2009.05.25
17:34:31

음.,, 탭키에 섭디비젼이 들어가도 괜찮겠네요,,,

전 탭키에 렌더 버튼 넣고 쓰는데,,-_-;;;

풰이스로봇

2009.05.25
23:10:36
profile

저는 포기하렵니다...ㅡ;ㅡ

이것이 CHANGESUBDIVISION 스크립트인데...수정해볼라햇드만.,ㅡㅡ;

ub ChangeSubdivisionProc( in_InputObjs, in_updir )
 dim curval, l_objects, l_obj, tstnode, tstbrch, delta
 dim maxsubd, minsubd, maxstep, minstep

 maxsubd = 4
 minsubd = 0
 maxstep = 5
 minstep = 1

 ' Prepare delta depending on direction
 if ( in_updir ) then
  delta = 1
 else
  delta = -1
 end if

 Set l_objects = SIFilter(in_InputObjs, "sceneobject")
 
 set l_donelist = CreateObject("XSI.Collection")
 l_donelist.unique = true

 if TypeName(l_objects) <> "Nothing" then
     dim maxhit, minhit, maxoglhit, minoglhit, minrenhit, maxrenhit
     maxhit = 0
     minhit = 0

  for each l_obj in l_objects

   if (l_obj.Type = "polymsh") or (l_obj.Type = "crvlist") or (l_obj.Type = "surfmsh") or (l_obj.Type = "hair") then

  
    ' Check silently first if we have a local geom approx property (node or branch)
    set prop = Dictionary.GetObject(l_obj & ".geomapprox")
    if ( not prop.IsA( siLocalPSet ) ) then
     MakeLocal l_obj & ".geomapprox", siDefaultPropagation
    end if

    ' Change subdivision level if within boundaries
    '------------ Polygon Meshes ------------------------
    if l_obj.Type = "polymsh" then
     ' Rendering level
     dim renval, oglval
     renval = GetValue (l_obj & ".geomapprox.gapproxmordrsl")
     oglval = GetValue (l_obj & ".geomapprox.gapproxmosl")
 
     if in_updir then
      if renval >= maxsubd and oglval >= maxsubd then
          maxhit = maxhit + 1
       ' logmessage "OGL and rendering subdivision level reached maximum for object " & l_obj
      elseif renval >= maxsubd then
       ' logmessage "Rendering subdivision level reached maximum for object " & l_obj
          maxhit = maxhit + 1
       SetValue l_obj & ".geomapprox.gapproxmosl", oglval + delta
      elseif oglval >= maxsubd then
       ' logmessage "OGL subdivision level reached maximum for object " & l_obj
          maxhit = maxhit + 1
       SetValue l_obj & ".geomapprox.gapproxmordrsl", renval + delta
      else
       SetValue l_obj & ".geomapprox.gapproxmosl," & l_obj & ".geomapprox.gapproxmordrsl", Array(oglval+delta,renval+delta)
      end if
     else
      if renval = minsubd and oglval = minsubd then
       ' logmessage "OGL and rendering subdivision level at minimum for object " & l_obj
          minhit = minhit + 1
      elseif renval = minsubd then
       ' logmessage "Rendering subdivision level at minimum for object " & l_obj
          minhit = minhit + 1
       SetValue l_obj & ".geomapprox.gapproxmosl", oglval + delta
      elseif oglval = minsubd then
       ' logmessage "OGL subdivision level at minimum for object " & l_obj
          minhit = minhit + 1
       SetValue l_obj & ".geomapprox.gapproxmordrsl", renval + delta
      else
       SetValue l_obj & ".geomapprox.gapproxmosl," & l_obj & ".geomapprox.gapproxmordrsl", Array(oglval+delta,renval+delta)
      end if
     end if
 
    '------------ Curves ------------------------
    elseif l_obj.Type = "crvlist" then

     curval = GetValue (l_obj & ".geomapprox.gapproxvwcustep")

     if in_updir and curval >= maxstep then
         maxhit = maxhit + 1
      ' logmessage "Step level reached maximum for object " & l_obj
     elseif (not in_updir) and curval = minstep then
         minhit = minhit + 1
      ' logmessage "Step already at minimum for object " & l_obj
     else
      SetValue l_obj & ".geomapprox.gapproxvwcustep", curval + delta
     end if

    '------------ Surface Meshes ------------------------
    elseif l_obj.Type = "surfmsh" then
     curval  = GetValue (l_obj & ".geomapprox.gapproxvwustep")
 
     if in_updir and curval >= maxstep then
         maxhit = maxhit + 1
      ' logmessage "Step level reached maximum for object " & l_obj
     elseif (not in_updir) and curval = minstep then
         minhit = minhit + 1
      ' logmessage "Step already at minimum for object " & l_obj
     else
      SetValue l_obj & ".geomapprox.gapproxvwustep", curval + delta
      SetValue l_obj & ".geomapprox.gapproxvwvstep", curval + delta
     end if
    '------------ Hair Objects ------------------------
    else  ' Hair
     ' Make sure we're not in linear mode
     if GetValue( l_obj & ".geomapprox.gapproxhocrvdeg" ) <> 1 then
      ' Rendering level
      renval = GetValue (l_obj & ".geomapprox.gapproxhocrvrsl")
      oglval = GetValue (l_obj & ".geomapprox.gapproxhocrvosl")
  
      if in_updir then
       if renval >= maxsubd and oglval >= maxsubd then
        ' logmessage "OGL and rendering subdivision level reached maximum for object " & l_obj
              maxhit = maxhit + 1
       elseif renval >= maxsubd then
        ' logmessage "Rendering subdivision level reached maximum for object " & l_obj
              maxhit = maxhit + 1
        SetValue l_obj & ".geomapprox.gapproxhocrvosl", oglval + delta
       elseif oglval >= maxsubd then
        ' logmessage "OGL subdivision level reached maximum for object " & l_obj
              maxhit = maxhit + 1
        SetValue l_obj & ".geomapprox.gapproxhocrvrsl", renval + delta
       else
        SetValue l_obj & ".geomapprox.gapproxhocrvosl," & l_obj & ".geomapprox.gapproxhocrvrsl", Array(oglval+delta,renval+delta)
       end if
      else
       if renval = minsubd and oglval = minsubd then
        ' logmessage "OGL and rendering subdivision level at minimum for object " & l_obj
              minhit = minhit + 1
       elseif renval = minsubd then
        ' logmessage "Rendering subdivision level at minimum for object " & l_obj
              minhit = minhit + 1
        SetValue l_obj & ".geomapprox.gapproxhocrvosl", oglval + delta
       elseif oglval = minsubd then
        ' logmessage "OGL subdivision level at minimum for object " & l_obj
              minhit = minhit + 1
        SetValue l_obj & ".geomapprox.gapproxhocrvrsl", renval + delta
       else
        SetValue l_obj & ".geomapprox.gapproxhocrvosl," & l_obj & ".geomapprox.gapproxhocrvrsl", Array(oglval+delta,renval+delta)
       end if
      end if
     end if
    end if
   else
    ' logmessage "Approximation level cannot be changed for object '" & l_obj & "'"
   end if
  next
  if minhit = 1 then
      logmessage "An object has hit the minimum OGL and/or rendering subdivision limit."
  elseif minhit > 1 then
      logmessage minhit & " objects have hit their minimum OGL and/or rendering subdivision limit."
  end if
  if maxhit = 1 then
      logmessage "An object has hit the maximum OGL and/or rendering subdivision limit."
  elseif maxhit > 1 then
      logmessage maxhit & " objects have hit their maximum OGL and/or rendering subdivision limit."
  end if
 end if
end sub

신선

2009.05.26
00:01:51
ㅡ,.ㅡ

샤이닝

2009.05.26
00:05:46

=.= 완전 어려워요. 빨리 저도 스크립트를 자유롭게 만드는 날이 왔으면 좋겠네요. ^-^

풰이스로봇

2009.05.29
01:39:53
profile

그냥 쉽게..+ 키 두번누르시고 스크립트 애디터 창에서 복사하신후에 EXTERNAL 로 버튼만드신후 단축키 지정하세요...

ㅎㅎ 저걸어케고쳐써요.ㅡ,ㅡ 모든 경우의 수가 다있는데요..;;

샤이닝

2010.08.17
01:28:24

오토핫키라는 단축키 변경하는 프로그램에서 간단히 해결되네요.

http://www.autohotkey.pe.kr/bbs/board.php?bo_table=qna&wr_id=10932#c_10938

 

Tab::                                                    ;Tab키를 눌렀을때
flag:=!flag                                            ;flag의 값을 a키가 눌릴때마다 0 > 1, 1 > 0 으로 바꿔줍니다.
msg:=flag ? "{PGUP}":"{PGDN}"    ;flag의 값에 따라 msg의 내용을 1과 2로 정해줍니다.
send,%msg%                                   ;변수 msg의 내용을 send합니다.
return

 

물론 "{PGUP}{PGUP}":"{PGDN}{PGDN}" 이런식으로 하면 두번 제가 질문한것과 같이 두단계로 올라갔다 내려갔다 합니다.

 

키 하나당 두개의 명령어를 번갈아 가며 사용하는경우 다른키들도 응용하면 좋겠네요.

전 소프트이미지 할때 사용하지 않는 큼지막한 CapsLocks도 원하는것으로 적용했어요.

CGnDEV

2010.08.17
09:42:32

ㅋㅋㅋ 이 글을 까맣게 잊고 있었네요.

넵.. 샤이닝님 께서 올려주신 코드가 토글키 활용에 기본이 되는 것입니다.

저걸 이용해서 XSI 자체에서도 토글키를 만들수 있습니다.

물론 문법도 틀릴테고, 전역변수로 사용될 변수나 프로퍼티가 필요하지만.

그리 복잡하지는 않습니다.

샤이닝

2010.08.17
10:13:11

아..그렇군요. ^^; 어디에 쓰이는 문법이던 조금씩 알아놓으면 문법을 보고 이해하거나 변경하는데 도움이 많이 될 것 같습니다.

CGnDEV

2010.08.17
11:08:49

자~~~ 아래에 완성했습니다.

아래 코드를 그림처럼 넣고, 테스트해보세요.

소스를 실행시키는 F5 키를 누르면 번갈아가면서 섭디비전이 왔다 갔다 하는걸 볼 수 있을꺼에요.

프로퍼티를 만들어서 전역변수처럼 쓰는걸 추천하는데 그건 좀 어렵구요.

간단한거는 아래처럼 SetGlobal, GetGlobal 을 사용하면됩니다.


Python 코드로 해놓은거구요.

이걸 코맨드로 만들어서 단축키 지정하시면 되겠습니다. ^^




app = Application


try : 

tFlag = app.GetGlobal( "gXToggle" )


except:

app.SetGlobal( "gXToggle", 0 )

tFlag = 0


tFlag = app.GetGlobal( "gXToggle" )


if not( tFlag ) :

app.SetGlobal( "gXToggle", 1 )

app.IncreaseSubdivision( "" )

else :

app.SetGlobal( "gXToggle", 0 )

app.DecreaseSubdivision( "" )



2010-08-17_002.png

첨부 :
2010-08-17_002.png [File Size:46.5KB/Download2]

샤이닝

2010.08.18
22:26:14

와..좋은팁 감사합니다 ^^ 단축키 지정해 놔야겠네요.  암튼 대단하세요.

List of Articles
번호 제목 글쓴이 날짜
공지 ICE ICE 노드 한글로 설명된 사이트 안내. [12] CGnDEV 2009-12-21
공지 FAQ Q&A 게시판 이용에 대한 공지 2010.05 XSIuser 2008-07-14
1128 ETC XSI DIGITAL TUTORS 혹시 토렌트 시드 가지고 계신분 있나요?? [3] 마그마르 2010-09-24
1127 ETC UV필시 체크무늬크기가 중요한가여? [4] 허돌 2010-08-13
1126 Bug & Error xsi reference model이 이상하군요 [6] 마초 2010-09-15
1125 FAQ 옥테인 렌더러 구입하신 분들~!! [8] 대간한베지밀군 2010-09-20
1124 FAQ 확장자.xsi로 된파일은 어떻게 열면되나요? [1] 잉크몬스 2010-09-18
1123 Shading texture editor가 심하게 버벅거립니다.ㅠ [6] 기린 2010-09-15
1122 Rendering G I 질문있습니다. [9] file DINO 2010-09-09
1121 Simulation 혹시 exocortex 를 쓰는데 저장이 안되요 저같은 현상 있으신분 [2] 니케 2010-09-16
1120 ICE Slide on surface 컴파운드. 면을 뚫고 추락합니다. [1] file 이드 2010-09-15
1119 ICE 플레이버튼 누르고 멈춘다음 이어서 플레이 하는법 [3] 흠냥 2010-09-13
1118 FAQ 뷰포트에서 마우스 오른클릭이 안먹힙니다 [2] 흠냥 2010-09-12
1117 Modeling 버텍스 [4] 꽃미남 2010-09-13
1116 Animation 다리 관절에 관한 질문이 있습니다.^_^ 퍼니 2010-09-11
1115 Modeling 기초적인건데..polymesh와 surface의 차이는 뭔가여 [2] 녹삼 2010-09-10
1114 PLUG-IN uvlayout 엑시 2011에서 안되나요? [4] 흐개4 2010-09-09
1113 ICE WoW!! Custom ICE Node 컴파일 테스트! [8] file CGnDEV 2010-09-05
1112 Rendering sss Fast Skin은 어떻게 사용하는건가여? [1] 허돌 2010-08-28
1111 ICE Rescale에 대해서 질문이 있습니다. [1] file 시니3 2010-09-02
1110 ICE Show Values를 설정하였을때! [4] file 샤이닝 2010-03-21
1109 ICE 랜더링 할때 파일에 프래임 숫자 붙는건 조정할수 없나요? [2] isyah 2010-08-23
1108 ICE shatter공부를 하던중... [4] file 시니3 2010-08-30
1107 Animation 애니매이션에 관련된 초보적 질문... [2] isyah 2010-08-30
1106 ICE 정말 너무 막연한 질문을 드립니다. (ICE) [4] 시니3 2010-08-29
1105 ICE ICE 튜토리얼 뭘 만들면 될가요? [24] CGnDEV 2010-07-27
1104 ICE Attribute Color로 파티클 렌더링 하기 [1] file CGnDEV 2010-08-26
1103 ICE 핀테이블에 대해서 자세히 알고싶어요 [6] 골방에서걷는중 2010-08-24
1102 ICE 파티클들을 하나의 형태로 배열할수있나요? [2] 골방에서걷는중 2010-08-26
1101 Compositing 흠 제가 뭐 잘못한걸까요? [4] file 라라라리라 2010-08-16
1100 ICE vector질문 드립니다. [2] file 니케 2010-08-20
1099 Simulation 사이플렉스 오류 [1] file 로모군 2010-08-20
1098 Modeling 더블 엣지 제거 방법 [4] file 요원009 2010-08-19
» Modeling Page Up, Down에 관해 [16] 샤이닝 2009-05-24
1096 ICE normalize가 필요한 이유를 알고싶습니다. [3] 니케 2010-08-18
1095 Rendering VR 이미지 [5] stonemir 2010-08-12
1094 FAQ 옥테인렌더러더러 [3] 홍탱 2010-08-13
1093 FAQ xsi로 노멀맵을 뽑아 보려고 하는데요.. 흰둥님 2010-08-16
1092 Simulation 공 따라가기!! 이런건 어떻게 할까요? [3] file 대간한베지밀군 2010-08-15
1091 Rendering 우주토기님...의 지브러쉬//어느분의 답변을 보고 [3] file 허돌 2010-08-13
1090 Rendering 노멀맵을 입히고 퀵랜더뷰로 보면..경계선인지 먼지가 선명하게;;; [5] file 허돌 2010-08-12
1089 ETC 조명에대한 간단한 질문.. [5] isyah 2010-08-09
1088 Rendering 옥테인에 대한 질문입니다 [2] 대간한베지밀군 2010-08-06
1087 FAQ 씬(Scene) 무게를 줄이는 방법 CGnDEV 2010-08-09
1086 ETC 2011 울티맵퍼 질문이용 [2] sAKI 2010-08-06
1085 Shading Architectural의 알파 질문입니다 [2] sAKI 2010-07-30
1084 HARDWARE 렌더팜, 네트워크렌더, 워크스테이션 중 어떤 것이 효율적일까요? [4] 대간한베지밀군 2010-07-29
1083 ICE 아이스 파티클 버전별 호환 [3] 허술유저 2010-07-27
1082 PLUG-IN sph tool 을 찾고 있습니다 [2] 대간한베지밀군 2010-07-27
1081 ETC 옥테인 렌더 구매하면 어떤 혜택이 있을까요? [5] hook 2010-07-26
1080 ETC 스케일 조정하고 저장 했다가 그 파일을 다시 열면 원래크기로 돌아와 있어요. [2] file hook 2010-07-26
1079 ICE ice 크라카토아 플러그인 [4] 허술유저 2010-07-25