【问题标题】:Panda3D & Python Error: IOError Could not load Model File(s)Panda3D & Python 错误:IOError 无法加载模型文件
【发布时间】:2014-05-10 15:11:20
【问题描述】:

我正在尝试使用 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()

所以现在您知道了错误和我的代码,但是如何修复错误? 我的 Python 文件夹中有 panda.pth,因此它可以代替 Panda3D 附带的 python 副本,并且我的 Python 副本与 Panda3D 附带的注册副本的 版本 相同。 那么,有人可以帮忙吗?

Python 版本 2.7.3 Panda3D 版本 1.8.1

【问题讨论】:

  • 将错误信息添加到问题正文中。
  • 您应该在此处复制粘贴错误消息,而不是提供指向有关它的图像的链接。 (例如链接可能会消失)。无论如何,如果所有信息都嵌入到问题中,它会更好地阅读,我们不需要到处去获取信息。这是一个 SO 约定。
  • 好的,但是没有办法抓取错误日志,因为控制台打开,收到错误,然后立即关闭。
  • 很久没用windows了,不过我觉得你可以从命令行运行,把错误保留在现场。
  • 好的,我可以通过手动运行获得 python 脚本的完整日志:pastebin.com/TmuGMNnS

标签: python panda3d


【解决方案1】:

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

如果这些模型存在于.mf 多文件中(我假设它们是因为这些看起来来自迪士尼卡通城),您必须使用虚拟文件系统挂载多文件(参见 Panda3D 手册),或提取它们使用multify 实用程序复制到磁盘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2016-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多