多个fbx文件怎么合并_【Houdini】批量导入ABC和FBX文件mergeHips文件(搬运)

这篇博客介绍了如何使用Python脚本在Houdini中实现批量导入FBX、ABC文件并合并HIP文件。通过一个自定义的窗口应用,用户可以选择文件,脚本会自动处理导入和合并操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搬运大神的代码,超级好用~

#!/usr/bin/python

# encoding utf-8

'''

Author: ZhangZhen

Data:

2018.8.9

Email:  orpha2010@qq.com

WeChat: orpha2010 /  CGgroup

'''

from PySide2.QtWidgets import *

from PySide2.QtCore import *

from PySide2.QtGui import *

import sys,os

class MainWindow(QMainWindow):

def

__init__(self):

super(MainWindow,self).__init__()

self.setWindowTitle("Import Asset

v0.01")

self.resize(600,450)

self.setProperty('houdiniStyle',

True)

self.setStyleSheet(hou.qt.styleSheet())

self.setAutoFillBackground(True)

#ui

self.window = QWidget()

self.fbxBtn = QPushButton("Import

FBX")

self.abcBtn = QPushButton("Import

ABC")

self.hipBtn = QPushButton("Merge

HIPs")

self.delBtn =

QPushButton("Delete")

self.cancelBtn =

QPushButton("Cancel")

self.okBtn =

QPushButton("OK")

self.lw = QListWidget()

# layout

self.hlay = QHBoxLayout()

self.vlay2 = QVBoxLayout()

self.vlay2.addSpacing(22)

self.vlay2.addWidget(self.fbxBtn)

self.vlay2.addWidget(self.abcBtn)

self.vlay2.addWidget(self.hipBtn)

self.vlay2.addWidget(self.delBtn)

self.vlay2.addStretch()

self.vlay2.addWidget(self.okBtn)

self.vlay2.addWidget(self.cancelBtn)

self.vlay3 = QVBoxLayout()

self.vlay3.addWidget(QLabel("Import

Asset"))

self.vlay3.addWidget(self.lw)

self.vlay3.addLayout(self.hlay)

self.hlay4 = QHBoxLayout()

self.hlay4.addLayout(self.vlay3)

self.hlay4.addLayout(self.vlay2)

self.window.setLayout(self.hlay4)

self.setCentralWidget(self.window)

# connect btn

self.fbxBtn.clicked.connect(self.importFBX)

self.abcBtn.clicked.connect(self.importABC)

self.hipBtn.clicked.connect(self.mergeHip)

self.delBtn.clicked.connect(self.deleteLst)

self.cancelBtn.clicked.connect(self.cancel)

self.okBtn.clicked.connect(self.run)

def

importFBX(self):

#print "import FBX"

fbxFD =

QFileDialog().getOpenFileNames(self,("Search FBX"),"/home","FBX

Files(*.fbx *.FBX)")

if len(fbxFD):

self.lw.addItems(fbxFD[0])

def

importABC(self):

fbxFD =

QFileDialog().getOpenFileNames(self,("Search ABC"),"/home","ABC

Files(*.abc *.ABC)")

if len(fbxFD):

self.lw.addItems(fbxFD[0])

def

mergeHip(self):

fbxFD =

QFileDialog().getOpenFileNames(self,("Search HIP"),"/home","HIP

Files(*.hip *.HIP)")

if len(fbxFD):

self.lw.addItems(fbxFD[0])

def

deleteLst(self):

self.lw.takeItem(self.lw.currentRow())

def

cancel(self):

self.close()

def

run(self):

if self.lw.count()>0:

for i in

range(self.lw.count()):

assetPath =

self.lw.item(i).text()

ex =

assetPath.split(".")[-1]

if ex.lower() ==

"fbx":

hou.hipFile.importFBX(assetPath)

elif ex.lower() ==

"abc":

# create abc node

abcName =

os.path.basename(assetPath)[:-4]

abcGeo =

hou.node("/obj").createNode("geo",abcName)

childrenNodes = abcGeo.children()

for j in childrenNodes:

j.destroy()

abcNode =

abcGeo.createNode("alembic")

abcNode.setParms({"fileName":assetPath})

elif ex.lower() ==

"hip":

hou.hipFile.merge(assetPath)

hou.ui.displayMessage("test")

else:

hou.ui.displayMessage("NONE")

Dialog = MainWindow()

Dialog.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值