cad2025 電腦輔助設計與實習

  • Home
    • SMap
    • reveal
    • blog
  • About
    • Mind-Map
    • AI
      • Teams
      • Prompts
    • Homework
      • HW2
      • Plotter
  • Topics
    • Network
    • ICMP
    • IPv6
    • DNS
    • Proxy
    • Web
      • Codespaces
  • Software
    • Git
    • CMSiMDE
      • Flask
    • Solvespace
      • Compile
    • NX2312
      • License
    • Onshape
    • Webots
      • Fourbar
      • TimeStep
      • Clouds
      • Talks
      • Blender
      • Ardupilot
  • Tutorial
    • Stage1
      • Tutorial1
      • Tutorial2
    • Stage2
      • Tutorial3
      • Distancesensor
      • Tutorial4
      • Tutorial5
    • Stage3
      • Tutorial6
      • Tutorial7
      • Stream
      • Webots Server
  • Projects
    • Control
    • Printer
    • Otto
    • Otto_ninja-1
      • Simplify
    • OpenDuck
    • Pupper
    • JetAcker
  • Brython
  • Ref
    • Reeborg
      • ex1
      • Otto_ninja-2
    • Pyodide
    • Pyodide_ex
    • Pyodide2
      • robot.py
      • Example2
    • Pyodide3
      • png_files
      • Harvest
Otto_ninja-1 << Previous Next >> OpenDuck

Simplify

以下程式碼是一個專為 Blender 設計的 Python 程式,其目的是將複雜的 3D 模型零件簡化為凸包(Convex Hull),並在簡化後保留原始物件的物理屬性,最後將簡化後的模型匯出。

由於利用 CAD 繪出的零件,轉入 Webots 進行剛體動力學模擬運算時,若能將幾何外形轉換為網格資料較為簡單的凸包,可大幅減少物理引擎的運算負擔,進而提升模擬的流暢度和穩定性。

以下是程式碼的設計原理與主要流程:

設計原理:

分離設定與核心邏輯:程式碼將使用者可修改的參數(如檔案路徑、格式、簡化比率)放在程式開頭的「使用者設定」區塊,而將實際執行的功能封裝在獨立的函式中。這種設計使程式易於修改和維護,使用者不需要理解複雜的內部邏輯就能快速調整參數。

模組化函式:每個函式負責一個單一且明確的任務,例如 clear_scene() 清空場景、import_all_parts() 匯入模型、get_physics_properties() 獲取物理屬性等等。這種模組化設計使程式碼結構清晰,易於除錯和理解。

穩健的錯誤處理:在 import_all_parts()、get_physics_properties() 等函式中,程式碼都包含了對異常情況(如檔案夾不存在、物件無效)的檢查和錯誤訊息輸出。這確保了腳本在遇到問題時不會無故崩潰,而是能給出有用的提示。

複製-簡化-匹配三階段工作流程:

複製:為每個原始零件建立一個副本。這樣可以避免直接修改原始物件。

簡化:對這個副本執行凸包(Convex Hull)運算。凸包是一個包含原始物體所有頂點的最小凸多面體,可以將複雜的幾何體轉化為簡單的凸體。

匹配:將簡化後的凸包賦予原始物件的物理屬性,包括位置、旋轉和質量。

匯出:最後,刪除原始物件,只匯出簡化後的凸包。

利用 Blender scripting 簡化 OBJ 組立檔中的個別零件: blender_simplify_obj_parts.7z

simplify_parts_v2.py


Otto_ninja-1 << Previous Next >> OpenDuck

Copyright © All rights reserved | This template is made with by Colorlib