zoukankan      html  css  js  c++  java
  • 三种形状匹配脚本

    ----吸附到模型表面

    rollout unnamedRollout "Untitled" 149 height:191
    (
     button btn1 "start" pos:[41,146] 61 height:25
     pickButton Souce "Souce" pos:[19,31] 109 height:36
     pickButton Target "Target" pos:[19,80] 109 height:36
     groupBox grp1 "拾取模型" pos:[9,7] 130 height:127
     
     on Souce picked obj do
        (
         if obj != undefined do

      (
         Souce.text = obj.name
      )
     )
     
     on Target picked obj do
        (
         if obj != undefined do

      (
         Target.text = obj.name
      )
     )

     on btn1 pressed do
     (
      if Souce.object != undefined and Target.object != undefined do
      (
       raydir = Target.object.pos - Souce.object.pos
       raypos = Souce.object.pos
       getray = ray raypos raydir
       
       temp = intersectray Target.object getray
       Souce.object.pos = temp.pos
      )
     )
     
    )
    createDialog unnamedRollout 149 191

    ---顶点匹配形状
    rollout unnamedRollout "Untitled" 149 height:191
    (
     button btn1 "start" pos:[41,146] 61 height:25
     pickButton Souce "Souce" pos:[19,31] 109 height:36
     pickButton Target "Target" pos:[19,80] 109 height:36
     groupBox grp1 "拾取模型" pos:[9,7] 130 height:127
     label lab1 "" pos:[30,185]
     on Souce picked obj do
        (
         if obj != undefined do

      (
         Souce.text = obj.name
      )
     )
     
     on Target picked obj do
        (
         if obj != undefined do

      (
         Target.text = obj.name
      )
     )

     on btn1 pressed do
     (
      if Souce.object != undefined and Target.object != undefined do
      (
       if superclassof Souce.object == geometryclass and classof Souce.object != bonegeometry do
       (
        convertTo Souce.object TriMeshGeometry
        souceVerts = Souce.object.verts --点集合
        souceNumber = souceVerts.count --点总数
        try
        (
         for i = 1 to souceNumber do
         (
          
          raydir = Target.object.pos - souceVerts[i].pos
          raypos = souceVerts[i].pos
          getray = ray raypos raydir
          
          temp = intersectray Target.object getray
          souceVerts[i].pos  = temp.pos
         )
         
         update Souce.object geometry:true
        )catch()
       )
      )
     )
     
    )
    createDialog unnamedRollout 149 210

    --顶点匹配到Z平面


    rollout unnamedRollout "Untitled" 149 height:191
    (
     button btn1 "start" pos:[41,146] 61 height:25
     pickButton Souce "Souce" pos:[19,31] 109 height:36
     pickButton Target "Target" pos:[19,80] 109 height:36
     groupBox grp1 "拾取模型" pos:[9,7] 130 height:127
     label lab1 "" pos:[30,185]
     on Souce picked obj do
        (
         if obj != undefined do

      (
         Souce.text = obj.name
      )
     )
     
     on Target picked obj do
        (
         if obj != undefined do

      (
         Target.text = obj.name
      )
     )
     on btn1 pressed do
     (
      if Souce.object != undefined and Target.object != undefined do
      (
       if superclassof Souce.object == GeometryClass and classof Souce.object != bonegeometry do
       (
        convertTo Souce.object TriMeshGeometry
        local souceVerts = Souce.object.verts --点集合
        local souceNumber = souceVerts.count --点总数
        try
        (
         for i = 1 to souceNumber do
         (
          s = [0,0,-1]
          --raydir = Target.object.pos - souceVerts[i].pos 
          raypos = souceVerts[i].pos
          getray = ray raypos s--raydir
          
          temp = intersectray Target.object getray
          if temp != undefined do
          (
            souceVerts[i].pos  = temp.pos
          )
         )
         
         update Souce.object geometry:true
        )catch()
       )
      )
     )
     
    )
    createDialog unnamedRollout 149 210


    /*x = $Dummy001
    y = $Sphere001
    raydir =   y.pos - x.pos
    raypos = x.pos
    getray = ray raypos raydir

    temp = intersectray y getray
    x.pos = temp.pos

  • 相关阅读:
    解决线程不能访问用户界面组件的问题
    Oracle使用手册(三)存储过程与触发器
    VC中的字符串操作
    Windows 窗体多线程
    VC中的指针操作
    读写独立存储库
    10个不用保养品的美容护肤法 生活至上,美容至尚!
    吃出来的美白方法 生活至上,美容至尚!
    八大梦境提醒的你疾病所在 生活至上,美容至尚!
    31条!最致命的生活小细节 生活至上,美容至尚!
  • 原文地址:https://www.cnblogs.com/softimagewht/p/1811877.html
Copyright © 2011-2022 走看看