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

  • 相关阅读:
    OpenResty 作者章亦春访谈实录
    linux 下C语言学习路线
    swift 集合类型
    不懂技术的人不要对懂技术的人说这很容易实现
    java学习笔记7--抽象类与抽象方法
    java学习笔记6--类的继承、Object类
    python练习题
    python的里字典和列表
    python里list列表,tuple元组内部功能介绍
    python里float和long内部功能及字符串str介绍
  • 原文地址:https://www.cnblogs.com/softimagewht/p/1811877.html
Copyright © 2011-2022 走看看