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

  • 相关阅读:
    .NET Framework 3.0 和 Windows SDK
    用 C# 开发 SQL Server 2005 的自定义聚合函数
    IronPython 源码剖析系列(2):IronPython 引擎的运作流程
    IronPython 个人网站样例宝藏挖掘
    SetRenderMethodDelegate 方法
    使用 Castle ActiveRecord 开发发现的一些问题
    IronPython for ASP.NET CTP WhitePaper 摘要翻译
    关于 IE 模态对话框的两个问题
    逐步改用 IronPython 开发你的 ASP.NET 应用程序
    使用 Flash 和 C# WinForm 配合打造界面漂亮的应用程序(摘要)
  • 原文地址:https://www.cnblogs.com/softimagewht/p/1811877.html
Copyright © 2011-2022 走看看