模型变形第一版(模型变形)

---1.前期创建面片完成,
---2.定点射线完成,但是动态的更新,现在还是没有做。
---3.现在就是对于morpher  的操作。还有就是skinwrap 的操作。
--第一就是加入修改器。
---补充 要想,变形物体后顺利的删除之情的面,两个面。他们的变量必须要做出全局的,这个真的是很重要。
--  之上的那一个步骤不用劝局, 就是在投射前,复制一个就好。为了下一步的操作

fn g_filte_plane o = superclassof o == Geometryclass ---要过滤的物体。
 
global gt_morpher_one_pick_plane =undefined  , gt_morpher_two_pick_plane =undefined

fn gt_pick_morpher_count =

 
  --*****************************在用函数之前这里面一定是poly
 ----在这里面说一下。
 ----1.在单击事件处理之前,保证选择的是一个物体。
 ----2.在拾取的过程中加入报错机制,如在变形拾取时,出现面数不同意的现象,提出报错。*****
 ---3.成功加入后激活下拉 划块。滑块关联 变形的第一个通道。
 ---4.
  gt_morpher_one_pick_plane = $ ----着个就是全局指定,。

   gt_morpher_two_pick_plane = pickObject message:"Pick Target Surface:" filter:g_filte_plane  rubberBand:selection.center  rubberBandColor:green --- 这种拾取的方法更好
 
   if isValidNode gt_morpher_two_pick_plane  then ---这个好用, 是如果节点没有被删除。
  (
   undo "scripts" on
   (
    morp = Morpher ()  ; morp.Spinner_Minimum=0 ; morp.Spinner_Maximum=100 ; morp.Use_Limits=1 ; morp.name="变形拾取"
    addModifier  gt_morpher_one_pick_plane  morp
    ----这里必须保证顶点数一致 所以要进行一些处理
   
    ----转下poly
                  try ( convertTo  gt_morpher_two_pick_plane  Editable_Poly )catch (
   
   messagebox "操作不当,没按流程操作。\n返回。" title:"盖天编写"
   return false
        )
          try (    
    if  polyop.getNumVerts gt_morpher_one_pick_plane == polyop.getNumVerts gt_morpher_two_pick_plane then
    (
   
    WM3_MC_BuildFromNode gt_morpher_one_pick_plane.modifiers[1] 1 gt_morpher_two_pick_plane ----做好目标。
    )else
      (
     messagebox "拾取目标不对,面数不对或是类型不对,从新操作。" title:"盖天编写"
   return false
      )----end else 
         )catch ( messagebox "拾取目标不对,面数不对或是类型不对,从新操作。" title:"盖天编写")   
  ------ 然后下面就是画面激活要做的事情。
   ---2011.5.6 如果判断第一个确认已经拾取,则就激活界面
   ---语法是。 mf_morpher_mod = $.modifiers[#morpher]  WM3_MC_HasData mf_morpher_mod i
   )---end undo
  
     )---end if
 
)---end fn

原文地址:https://www.cnblogs.com/gaitian00/p/2039052.html