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

  • 相关阅读:
    SOJ 1035 DNA matching
    SOJ 1027 MJ,Nowhere to Hide
    SOJ 1021 Couples
    SOJ 1020 Big Integer
    C#中正则表达式的简单使用
    根据HTTP header收集客户端相关信息 --- tornado demo
    IIS7配置Gzip压缩
    网站性能工具Yslow的使用方法
    配置ETags
    细说ETags以及如何在 IIS6和 IIS7下取消ETags
  • 原文地址:https://www.cnblogs.com/softimagewht/p/1811877.html
Copyright © 2011-2022 走看看