欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python如何將兩個三維模型(obj)合成一個三維模型(obj)

 更新時間:2024年06月24日 14:53:40   作者:BTWBB  
這篇文章主要介紹了Python如何將兩個三維模型(obj)合成一個三維模型(obj)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Python將兩個三維模型合成一個三維模型

本文主要針對想要將兩個obj保存的三維模型合成一個三維模型即obj文件保存。

這樣就可以同時觀察并對比兩個三維模型。

Trimesh是對三維網(wǎng)格模型處理十分好用的庫,本次代碼即基于此庫!

######################
#同時將兩個模型顯示在一起,也可以將兩個模型拼接成為一個模型
######################


from cv2 import scaleAdd
import trimesh
import argparse
import numpy as np
import os 
import scipy.io as scio
import math

# 根據(jù)輸入的旋轉度數(shù)生成相應的旋轉矩陣
def make_rotate(rx, ry, rz):
    sinX = np.sin(rx)
    sinY = np.sin(ry)
    sinZ = np.sin(rz)

    cosX = np.cos(rx)
    cosY = np.cos(ry)
    cosZ = np.cos(rz)

    Rx = np.zeros((3, 3))
    Rx[0, 0] = 1.0
    Rx[1, 1] = cosX
    Rx[1, 2] = -sinX
    Rx[2, 1] = sinX
    Rx[2, 2] = cosX

    Ry = np.zeros((3, 3))
    Ry[0, 0] = cosY
    Ry[0, 2] = sinY
    Ry[1, 1] = 1.0
    Ry[2, 0] = -sinY
    Ry[2, 2] = cosY

    Rz = np.zeros((3, 3))
    Rz[0, 0] = cosZ
    Rz[0, 1] = -sinZ
    Rz[1, 0] = sinZ
    Rz[1, 1] = cosZ
    Rz[2, 2] = 1.0

    R = np.matmul(np.matmul(Rz, Ry), Rx)
    return R

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--obj1_path", type=str, default="對象1路徑.obj")
    parser.add_argument("--obj2_path", type=str, default="對象2路徑.obj")
    parser.add_argument("--out_path", type=str, default="./")
    parser.add_argument("--save_obj", action="store_true")
    args = parser.parse_args()
    
    #Load model
    mesh1 = trimesh.load(args.obj1_path)
    
    #To get vertices and faces for next steps
    v1 = mesh1.vertices #這樣得到的v,f格式是trimesh 內(nèi)置的格式,不能直接用于其它計算,需要轉換為numpy
    f1 = mesh1.faces
    v1 = np.array(v1)
    f1 = np.array(f1)

    # #rotate(optional)
    # R = make_rotate(0, math.radians(-50), 0)
    # v1 = np.dot(v1, R)

    mesh2 = trimesh.load(args.obj2_path)
    v2 = mesh2.vertices #這樣得到的v,f格式是trimesh 內(nèi)置的格式,不能直接用于其它計算,需要轉換為numpy
    f2 = mesh2.faces
    v2 = np.array(v2)
    f2 = np.array(f2)
    
    # ################other steps#################
    # #registration(optional)
    # mesh2t= trimesh.Trimesh(vertices = v2, faces = f2)
    # mesh_to_other = trimesh.registration.mesh_other(mesh1, mesh2t, samples=500, scale=False, icp_first=10, icp_final=50)
    
    #matching
    f2 = np.array(f2)+np.shape(v1)[0]
    v=np.concatenate((v1,v2),axis=0)
    f=np.concatenate((f1,f2),axis=0)

    # ############################################
    #Transfer result to mesh 
    obj = trimesh.Trimesh(vertices = v, faces = f)
    #To imshow
    # obj.show()
    if args.save_obj:
        #To save
        base=os.path.basename(args.out_path)
        name=os.path.splitext(base)[0]
        obj.export(f"{args.out_path}/{name}.obj") #保存為obj

運行

python show_two_model.py --save_obj (optional)

示例展示

可以通過給頂點統(tǒng)一增加偏移量使模型散開!

v2 = np.array(v2)+0.5

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python中plot函數(shù)語法示例詳解

    Python中plot函數(shù)語法示例詳解

    這篇文章主要介紹了Python中plot函數(shù)語法的相關資料,文章詳細介紹了MATLAB中的plot()函數(shù),包括其語法、如何繪制二維線圖、設置線型、標記符號和顏色以及如何繪制多組二維線圖等,需要的朋友可以參考下
    2024-11-11
  • Python中的各種裝飾器詳解

    Python中的各種裝飾器詳解

    這篇文章主要介紹了Python中的各種裝飾器詳解,Python裝飾器分兩部分,一是裝飾器本身的定義,一是被裝飾器對象的定義,本文分別講解了各種情況下的裝飾器,需要的朋友可以參考下
    2015-04-04
  • 10分鐘快速入門Pandas庫

    10分鐘快速入門Pandas庫

    pandas?是基于NumPy?的一種工具,該工具是為解決數(shù)據(jù)分析任務而創(chuàng)建的,這篇文章主要介紹了10分鐘快速入門Pandas庫,重點介紹pandas常見使用方法,結合實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • 詳解Python中xlsxwriter庫的基本操作

    詳解Python中xlsxwriter庫的基本操作

    xlsxwriter是一個用于創(chuàng)建和修改Excel文件(.xlsx)的Python庫,它提供了豐富的功能,可以創(chuàng)建復雜的Excel工作簿,本文為大家介紹了它的一些基本操作,希望對大家有所幫助
    2023-11-11
  • python 遞歸調(diào)用返回None的問題及解決方法

    python 遞歸調(diào)用返回None的問題及解決方法

    這篇文章主要介紹了python 遞歸調(diào)用返回None的問題,本文通過實例代碼給大家記錄了解決方案,代碼簡單易懂,非常不錯對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • pytest多進程或多線程執(zhí)行測試實例

    pytest多進程或多線程執(zhí)行測試實例

    這篇文章介紹了pytest多進程或多線程執(zhí)行測試的實例,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 使用pdb模塊調(diào)試Python程序實例

    使用pdb模塊調(diào)試Python程序實例

    這篇文章主要介紹了使用pdb模塊調(diào)試Python程序實例,本文著重講解了pdb.run()函數(shù)、pdb.runeval()函數(shù)、pdb.runcall()函數(shù)、pdb.set_trace()函數(shù)的使用以及pdb調(diào)試命令等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • python數(shù)字類型math庫原理解析

    python數(shù)字類型math庫原理解析

    這篇文章主要介紹了python數(shù)字類型math庫原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • 如何通過python代碼根據(jù)模板修改變量生成新yaml文件

    如何通過python代碼根據(jù)模板修改變量生成新yaml文件

    有些時候,需要根據(jù)一個yaml模板創(chuàng)建多個yaml文件實例,我們先寫一個yaml文件模板,然后通過python代碼修改模板中的變量,存儲為一個新的yaml文件,需要配合python的庫Template及ymal使用,本文給大家講解的非常詳細,需要的朋友跟隨小編一起看看吧
    2023-11-11
  • Python對小數(shù)進行除法運算的正確方法示例

    Python對小數(shù)進行除法運算的正確方法示例

    這篇文章主要介紹了Python對小數(shù)進行除法運算的正確方法示例,正確的方法是需要轉換成浮點數(shù),否則永遠不會得到正確結果,需要的朋友可以參考下
    2014-08-08

最新評論