Panda3D和Python错误:IOError无法加载模型文件

2024-09-29 06:33:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用Python创建一个Panda3D场景,当我试图运行Python代码时,我得到了:

http://tinypic.com/r/15duueg/8

我的代码是:

from direct.actor.Actor import Actor
from pandac.PandaModules import *
from direct.task import Task
import math
from math import pi, sin, cos
from direct.showbase.ShowBase import ShowBase
from direct.task import Task
from direct.interval.IntervalGlobal import Sequence
from pandac.PandaModules import Point3
from pandac.PandaModules import *

import direct.directbase.DirectStart
from panda3d.core import CollisionTraverser,CollisionNode
from panda3d.core import CollisionHandlerQueue,CollisionRay
from panda3d.core import Filename,AmbientLight,DirectionalLight
from panda3d.core import PandaNode,NodePath,Camera,TextNode
from panda3d.core import Vec3,Vec4,BitMask32
from direct.gui.OnscreenText import OnscreenText
from direct.actor.Actor import Actor
from direct.showbase.DirectObject import DirectObject

#Base Toontown Central
terrain = loader.loadModel('phase_4/models/neighborhoods/toontown_central.bam')
terrain.setPos(9.15527e-005, -1.90735e-006, 2.6226e-006)
terrain.setHpr(-90, 0, -0)
terrain.reparentTo(render)
terrain.setTransparency(TransparencyAttrib.MBinary, 1)

#Sky
sky = loader.loadModel('phase_3.5/models/props/TT_sky.bam')
sky.reparentTo(render)

#Pier
pier = loader.loadModel('phase_4/models/props/piers_tt.bam')
pier.setPos(-63.5335, 41.648, -3.36708)
pier.setHpr(120, 0, 0)
pier.reparentTo(render)

#Tunnel MM

tunnelthree = loader.loadModel('phase_4/models/modules/safe_zone_tunnel_TT.bam')
tunnelthree.reparentTo(render)
tunnelthree.setPos(-239.67,64.08,-6.18)
tunnelthree.setHpr(-90,0,0)
sign = loader.loadModel('phase_3.5/models/props/tunnel_sign_orange.bam')
sign.setScale(1.5, 1, 1.5)
sign.setPos(0, 0, -.18)
sign.reparentTo(tunnelthree.find('**/sign_origin'))
mickey = loader.loadModel('phase_3.5/models/props/mickeySZ.bam')
mickey.setScale(5, 5, 5)
mickey.setY(-0.15)
mickey.reparentTo(tunnelthree.find('**/sign_origin'))

#Gag Shop
gshop = loader.loadModel('phase_4/models/modules/gagShop_TT.bam')
gshop.setPos(-86.6848, -90.5693, 0.500015)
gshop.setHpr(-15, 0, 0)
gshop.reparentTo(render)
door = loader.loadModel('phase_3.5/models/modules/doors_practical.bam').find('**/door_double_square_ur')
door.setColor(1, 0.63, 0.38, 1)
door.reparentTo(gshop.find('**/door_origin'))

#Lightposts
light1 = loader.loadModel('phase_3.5/models/props/streetlight_TT.bam').find('**/prop_post_one_light')
light1.setPos(3.84337, 118.504, 3)
light1.setHpr(-110, 0, 0)
light1.reparentTo(render)

#Trees
tree1 = loader.loadModel('phase_3.5/models/props/trees.bam').find('**/prop_tree_large_ur')
brick = tree1.find('**/prop_tree_large_brickbox_ur')
wood = tree1.find('**/prop_tree_large_woodbox_ur')
brick.removeNode()
wood.removeNode()
tree1.setPos(-128.16, -24.0245, 0.000663757)
tree1.setHpr(135, 0, 0)
tree1.reparentTo(render)

lib = loader.loadModel('phase_4/models/modules/library.bam')
lib.reparentTo(render)
lib.setPos(91.4475,-44.9255,4)
lib.setHpr(180,0,0)
doorlib = loader.loadModel('phase_3.5/models/modules/doors_practical.bam').find('**/door_double_round_ur')
doorlib.setColor(0.88, 0.45, 0.38, 1)
doorlib.reparentTo(lib.find('**/library_door_origin'))

Bank = loader.loadModel('phase_4/models/modules/bank.bam')
Bank.reparentTo(render)
Bank.setPos(57.1796,38.6656,4)
Bank.setHpr(0,0,0)
doorbank = loader.loadModel('phase_3.5/models/modules/doors_practical.bam').find('**/door_double_round_ur')
doorbank.setColor(0.88, 0.45, 0.38, 1)
doorbank.reparentTo(Bank.find('**/bank_door_origin'))
textbank = OnscreenText(text = 'Bank')
#textbank.setPos(0, 0, -1.58)
#textbank.setScale(2.9, 1, 3.4)
#textbank.setKern(0.092795)
textbank.reparentTo(Bank.find('**/sign_origin'))

thall = loader.loadModel('phase_4/models/modules/toonhall.bam')
thall.reparentTo(render)
thall.setPos(116.66,24.29,4)
thall.setHpr(-90,0,-0)
doorthall = loader.loadModel('phase_3.5/models/modules/doors_practical.bam').find('**/door_double_round_ur')
doorthall.setColor(0.88, 0.45, 0.38, 1)
doorthall.reparentTo(thall.find('**/toonhall_door_origin'))

cshop = loader.loadModel('phase_4/models/modules/clothshopTT.bam')
cshop.reparentTo(render)
cshop.setPos(106.265,160.831,3)
cshop.setHpr(-30,0,0)
doorcshop = loader.loadModel('phase_3.5/models/modules/doors_practical.bam').find('**/door_double_clothshop')
doorcshop.setColor(0.88, 0.45, 0.38, 1)
doorcshop.reparentTo(cshop.find('**/door_origin'))

base.useDrive()
run()

现在你知道错误和我的代码了,但是我该如何修复错误呢? 我有熊猫.pth在我的Python文件夹中,这样它可以代替Panda3D附带的Python副本,而我的Python副本与Panda3D附带的注册副本版本相同。 有人能帮忙吗?在

Python 2.7.3版 Panda3D版本1.8.1


Tags: fromimportmodulesmodelsloaderfindrenderbam
1条回答
网友
1楼 · 发布于 2024-09-29 06:33:28

非常简单;您的代码引用相对位置的模型,例如phase_4/models/modules/gagShop_TT.bam,而这些文件并不存在于它们各自的位置。要么将它试图加载的模型放在正确的位置,要么更正相对路径以指向模型文件的正确位置。在

如果这些模型存在于.mf多文件中(我假设它们是因为它们看起来来自迪斯尼卡通城),那么您必须使用虚拟文件系统挂载多文件(请参阅Panda3D手册),或者使用multify实用程序将它们解压到磁盘上。在

相关问题 更多 >