【问题标题】:uploading multiple models to sketchfab将多个模型上传到sketchfab
【发布时间】:2014-10-31 07:08:34
【问题描述】:

以下是用blender python编写的代码

import bpy
import os
import subprocess
import time
bpy.data.materials["Material"].use_face_texture = True
customer_id = "john33"
image1 = "orangeskin.jpg" # define image 1 from folder
imagepath1 = "C:\\Users\\mrryan\\Desktop\\models\\materialsjpeg\\" 
image2 = "elec.jpg"
imagepath2 = "C:\\Users\\mrryan\\Desktop\\models\\materialsjpeg\\" 

#Step 1 go to Edit Mode
bpy.ops.object.editmode_toggle()

#step 2 insert image in the Image Editor
bpy.context.area.type = 'IMAGE_EDITOR'
bpy.ops.uv.smart_project()
bpy.ops.image.open(filepath = image1, directory= imagepath1 , 
files=[{"name":image1, "name":image1}])

#Step 3 back to Object Mode TRY AND CHANGE TITLE TO `CUSTOMER_ID AND FILE`
bpy.ops.object.editmode_toggle()
bpy.data.window_managers["WinMan"].sketchfab.title = "orangetube"



#Step 4 save new.blend   
filepath = os.path.join(r"C:\Users\mrryan\Desktop", customer_id + "orangytube.blend")
bpy.ops.wm.save_as_mainfile(filepath = filepath)
toggleedit = bpy.ops.object.editmode_toggle()
#here is the problem!!!!
subprocess.call(["bpy.ops.export.sketchfab()"], shell = True)



#new texture
#Step 1 go to Edit Mode


#step 2 insert image in the Image Editor
bpy.context.area.type = 'IMAGE_EDITOR'

bpy.ops.image.open(filepath= image2, directory= imagepath2, 
files= [{"name":image2,"name":image2}])    
bpy.ops.uv.smart_project()

#Step 3 back to Object Mode
bpy.ops.object.editmode_toggle()
bpy.data.window_managers["WinMan"].sketchfab.title = "elec-tube"
#Step 4 save new.blend
filepath = os.path.join(r"C:\Users\mrryan\Desktop", customer_id + "elec-tube.blend")
bpy.ops.wm.save_as_mainfile(filepath = filepath)
bpy.ops.export.sketchfab()

这个想法是,最终以编程方式将活动对象(组合但未与另一个对象连接)更改为具有不同的材料并更改形状等。每个单独的模型组合将分别上传到sketchfab并保存为搅拌机文件。

在这个阶段我的问题是,在上传时,脚本不会等到第一次上传完成。这会产生一个错误,说请等待当前上传完成。结果只上传了一个模型。 子进程.Popen 已经尝试过,但我无法让它工作。 也许返回值是错误的? 如何让脚本上传第一个模型,等到完成,然后继续调整并上传第二个?

【问题讨论】:

    标签: python subprocess call blender


    【解决方案1】:

    (我在 Sketchfab 工作,但我在 Blender 脚本方面没有太多经验)。

    问题在于 Sketchfab Blender Exporter 使用线程进行上传,这意味着子进程将返回,线程仍在后台运行。

    我会尝试使用新线程和join() 启动bpy.ops.export.sketchfab(),而不仅仅是子进程。

    以下资源可能会有所帮助:

    告诉我们进展如何!

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 1970-01-01
      • 2016-11-10
      • 2021-07-30
      • 2013-08-27
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多