You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Salabim 3D示例代码报ValueError: not enough values to unpack错误求助

Salabim官方示例代码ValueError问题排查与修复

这段提取自Salabim官方文档的3D动画示例代码运行时触发ValueError: not enough values to unpack错误,原代码如下:

import salabim as sim
from salabim import TrajectoryCircle

env = sim.Environment()
env.background_color("90%gray")
env.width(900)
env.height(700)
env.position((1000, 0))
env.width3d(900)
env.height3d(700)
env.position3d((0, 100))
env.animate(True)
env.animate3d(True)
env.show_camera_position()
env.show_camera_position(over3d=True)
sim.Animate3dGrid(x_range=range(-2, 3), y_range=range(-2, 3))

traj0 = TrajectoryCircle(radius=2, vmax=1)
d0 = traj0.duration()
sim.Animate3dBox(
    x_len=1, y_len=1, z_len=1, color="red", x=lambda t: traj0.x(t % d0), y=lambda t: traj0.y(t % d0), z=0.5,
    z_angle=lambda t: traj0.angle(t % d0)
)

traj1 = TrajectoryCircle(radius=1, vmax=1, angle0=360, angle1=0)
d1 = traj1.duration()
sim.Animate3dBox(
    x_len=0.5, y_len=0.5, z_len=0.5, color="green", x=lambda t: traj1.x(t % d1), y=lambda t: traj1.y(t % d1), z=0.25,
    z_angle=lambda t: traj1.angle(t % d1)
)

env.camera_move("""\
view(x_eye=4.0000,y_eye=4.0000,z_eye=4.0000,x_center=0.0000,y_center=0.0000,z_center=0.0000,field_of_view_y=45.0000) # t=0.0000
view(x_eye=3.6000,y_eye=3.6000,z_eye=3.6000) # t=0.4957
view(x_eye=3.2400,y_eye=3.2400,z_eye=3.2400) # t=0.9443
view(x_eye=3.2961,y_eye=3.1830,z_eye=3,2400) # t=1.6593
view(x_eye=3.2961,y_eye=3.1830,z_eye=2.9160) # t=3.3829
view(x_eye=3.2961,y_eye=3.1830,z_eye=2.6244) # t=3.5666
view(x_eye=3.2961,y_eye=3.1830,z_eye=2.3620) # t=3.7464
view(x_eye=3.2961,y_eye=3.1830,z_eye=2.1258) # t=3.8976
view(x_eye=3.2961,y_eye=3.1830,z_eye=1.9132) # t=4.1154
view(x_eye=3.2961,y_eye=3.1830,z_eye=1.7219) # t=4.3627
view(x_eye=3.2961,y_eye=3.1830,z_eye=1.5497) # t=4.5476
view(x_eye=3.2961,y_eye=3.1830,z_eye=1.3947) # t=4.7275
view(x_eye=3.3511,y_eye=3.1250) # t=5.3634
view(field_of_view_y=40.5000) # t=6.4102
view(field_of_view_y=36.4500) # t=6.7709
view(field_of_view_y=40.5000) # t=7.2002
view(field_of_view_y=45.0000) # t=7.3853
view(field_of_view_y=50.0000) # t=7.5354
view(field_of_view_y=55.5556) # t=7.6858
view(field_of_view_y=61.7284) # t=7.8731
view(field_of_view_y=68.5871) # t=8.0212
view(field_of_view_y=76.2079) # t=8.2113
view(field_of_view_y=84.6754) # t=8.4003
view(field_of_view_y=94.0838) # t=8.5829
view(field_of_view_y=104.5376) # t=8.7949
view(field_of_view_y=116.1529) # t=9.0388
view(field_of_view_y=129.0587) # t=9.2250
view(field_of_view_y=143.3986) # t=9.4486
view(field_of_view_y=129.0587) # t=11.0184
view(x_eye=4.0000,y_eye=4.0000,z_eye=4.0000,x_center=0.0000,y_center=0.0000,z_center=0.0000,field_of_view_y=45.0000) # t=11.6400
""", lag=1)


env.run()

问题原因

错误源于camera_move指令中的一处笔误:第4行的z_eye=3,2400使用了逗号作为小数点分隔符,Salabim解析时会将其识别为两个独立的值,导致参数解包时出现“值不足”的错误。

修复方案

将该行的逗号替换为小数点,修正为z_eye=3.2400即可解决问题。修复后的完整代码如下:

import salabim as sim
from salabim import TrajectoryCircle

env = sim.Environment()
env.background_color("90%gray")
env.width(900)
env.height(700)
env.position((1000, 0))
env.width3d(900)
env.height3d(700)
env.position3d((0, 100))
env.animate(True)
env.animate3d(True)
env.show_camera_position()
env.show_camera_position(over3d=True)
sim.Animate3dGrid(x_range=range(-2, 3), y_range=range(-2, 3))

traj0 = TrajectoryCircle(radius=2, vmax=1)
d0 = traj0.duration()
sim.Animate3dBox(
    x_len=1, y_len=1, z_len=1, color="red", x=lambda t: traj0.x(t % d0), y=lambda t: traj0.y(t % d0), z=0.5,
    z_angle=lambda t: traj0.angle(t % d0)
)

traj1 = TrajectoryCircle(radius=1, vmax=1, angle0=360, angle1=0)
d1 = traj1.duration()
sim.Animate3dBox(
    x_len=0.5, y_len=0.5, z_len=0.5, color="green", x=lambda t: traj1.x(t % d1), y=lambda t: traj1.y(t % d1), z=0.25,
    z_angle=lambda t: traj1.angle(t % d1)
)

env.camera_move("""\
view(x_eye=4.0000,y_eye=4.0000,z_eye=4.0000,x_center=0.0000,y_center=0.0000,z_center=0.0000,field_of_view_y=45.0000) # t=0.0000
view(x_eye=3.6000,y_eye=3.6000,z_eye=3.6000) # t=0.4957
view(x_eye=3.2400,y_eye=3.2400,z_eye=3.2400) # t=0.9443
view(x_eye=3.2961,y_eye=3.1830,z_eye=3.2400) # t=1.6593
view(x_eye=3.2961,y_eye=3.1830,z_eye=2.9160) # t=3.3829
view(x_eye=3.2961,y_eye=3.1830,z_eye=2.6244) # t=3.5666
view(x_eye=3.2961,y_eye=3.1830,z_eye=2.3620) # t=3.7464
view(x_eye=3.2961,y_eye=3.1830,z_eye=2.1258) # t=3.8976
view(x_eye=3.2961,y_eye=3.1830,z_eye=1.9132) # t=4.1154
view(x_eye=3.2961,y_eye=3.1830,z_eye=1.7219) # t=4.3627
view(x_eye=3.2961,y_eye=3.1830,z_eye=1.5497) # t=4.5476
view(x_eye=3.2961,y_eye=3.1830,z_eye=1.3947) # t=4.7275
view(x_eye=3.3511,y_eye=3.1250) # t=5.3634
view(field_of_view_y=40.5000) # t=6.4102
view(field_of_view_y=36.4500) # t=6.7709
view(field_of_view_y=40.5000) # t=7.2002
view(field_of_view_y=45.0000) # t=7.3853
view(field_of_view_y=50.0000) # t=7.5354
view(field_of_view_y=55.5556) # t=7.6858
view(field_of_view_y=61.7284) # t=7.8731
view(field_of_view_y=68.5871) # t=8.0212
view(field_of_view_y=76.2079) # t=8.2113
view(field_of_view_y=84.6754) # t=8.4003
view(field_of_view_y=94.0838) # t=8.5829
view(field_of_view_y=104.5376) # t=8.7949
view(field_of_view_y=116.1529) # t=9.0388
view(field_of_view_y=129.0587) # t=9.2250
view(field_of_view_y=143.3986) # t=9.4486
view(field_of_view_y=129.0587) # t=11.0184
view(x_eye=4.0000,y_eye=4.0000,z_eye=4.0000,x_center=0.0000,y_center=0.0000,z_center=0.0000,field_of_view_y=45.0000) # t=11.6400
""", lag=1)


env.run()

内容的提问来源于stack exchange,提问作者Akestor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 03:00:57