1. 为什么选择Python和Ursina构建3D世界如果你对游戏开发感兴趣但又觉得Unity、Unreal这些引擎门槛太高Python的Ursina引擎绝对是你的不二之选。我第一次接触Ursina时就被它的简洁惊艳到了——用几行代码就能创建一个3D场景这比我想象中简单太多。Ursina是一个基于Panda3D的轻量级3D引擎专为快速原型开发设计。它最大的特点就是Pythonic所有API设计都符合Python的简洁哲学。举个例子创建一个带颜色的立方体只需要三行代码from ursina import * cube Entity(modelcube, colorcolor.red) app.run()相比之下用其他引擎实现同样效果可能要写几十行代码。Ursina特别适合用来快速验证游戏创意学习3D编程基础概念制作简单的3D应用原型教学演示我就是用它来教学生3D坐标系的2. 搭建你的第一个3D场景2.1 环境配置与基础窗口安装Ursina非常简单只需要一个pip命令pip install ursina不过这里有个小坑要注意建议使用Python 3.7版本我在3.6上遇到过兼容性问题。安装完成后让我们创建最基本的3D窗口from ursina import * app Ursina() app.run()运行这段代码你会看到一个灰色窗口。别小看这个窗口它已经包含了完整的3D渲染管线、事件循环和输入系统。Ursina默认使用透视投影所以远处的物体会自动变小这就是3D场景的基础特征。2.2 创建你的第一个3D物体在Ursina中所有可见对象都是Entity实体。创建一个立方体就像点外卖一样简单cube Entity(modelcube)这里的model参数指定了基本形状。Ursina内置了几种基础模型cube 立方体sphere 球体quad 四边形plane 平面circle 圆形我建议你把这些模型都试一遍直观感受不同形状的特点。比如球体在旋转时就比立方体看起来更自然。3. 玩转3D空间变换3.1 控制物体大小调整物体大小有三种方式。第一种是等比缩放cube Entity(modelcube, scale2) # 长宽高都放大2倍第二种是沿特定轴向缩放cube Entity(modelcube, scale_x3) # 只拉伸X轴第三种是最灵活的向量缩放cube Entity(modelcube, scale(1, 2, 3)) # X1, Y2, Z3实际项目中我经常用向量缩放来制作长方形平台或高耸的柱子。记住缩放是相对于物体原始尺寸的默认立方体的每边长度是1单位。3.2 定位与旋转控制物体位置使用position参数cube Entity(modelcube, position(0, 1, -5))这里的坐标是(x, y, z)对应右、上、前方向。摄像机默认在(0,0,0)位置所以把物体放在z-5能让它出现在视野中。旋转也同样简单cube Entity(modelcube, rotation(45, 0, 0)) # 绕X轴旋转45度我建议你尝试不同的旋转组合比如(45,45,45)观察立方体的变化规律。理解这些变换对后续制作复杂场景至关重要。4. 为你的世界添加色彩4.1 使用预设颜色Ursina的color模块提供了丰富的预设颜色from ursina import color cube Entity(modelcube, colorcolor.azure)常用的颜色包括red、green、blue、black、white等完整列表可以在官方文档找到。我在项目中最喜欢用color.orange因为它看起来特别醒目。4.2 自定义RGB颜色如果需要特定颜色可以使用RGB或RGBA值# 纯红色 cube Entity(modelcube, colorcolor.rgb(255, 0, 0)) # 半透明蓝色 cube Entity(modelcube, colorcolor.rgba(0, 0, 255, 128))RGBA的第四个参数是透明度0是完全透明255是完全不透明。这个特性在制作玻璃效果时特别有用。5. 构建我的世界风格场景5.1 创建基础地形让我们用多个立方体搭建一个简单的地形from ursina import * app Ursina() # 地面 ground Entity(modelcube, scale(10, 0.5, 10), colorcolor.green, texturewhite_cube, texture_scale(10, 10)) # 几个柱子 for i in range(-3, 4, 2): Entity(modelcube, scale(1, 3, 1), position(i, 1.5, 3), colorcolor.gray) app.run()这里用到了texture参数它可以让立方体表面显示纹理。texture_scale控制纹理的重复次数数值越大纹理越密集。5.2 添加多样化的物体一个好的场景需要不同形状的物体组合# 添加一个球体 ball Entity(modelsphere, scale1.5, position(0, 2, 3), colorcolor.red) # 添加一个平台 platform Entity(modelcube, scale(4, 0.2, 2), position(0, 3, 0), colorcolor.white, texturewhite_cube)试着调整这些物体的位置和大小创建一个你喜欢的布局。记住3D场景设计的一个原则要有高低错落的层次感。6. 调试与优化技巧6.1 显示坐标轴刚开始学习时我经常分不清方向。这时可以添加坐标轴辅助from ursina import * EditorCamera() # 添加这个可以按住右键旋转视角 Axis() # 显示坐标轴 app Ursina()红色是X轴绿色是Y轴蓝色是Z轴。EditorCamera让你可以用鼠标旋转视角这在调试时非常方便。6.2 性能优化当场景中物体很多时可以启用批处理渲染app Ursina(batchTrue)这个设置能让Ursina合并相同材质的物体显著提升渲染性能。在我的测试中启用批处理后1000个立方体的帧率从15fps提升到了60fps。7. 下一步学习方向掌握了这些基础后你可以尝试添加纹理贴图让场景更真实实现简单的物理碰撞创建第一人称控制器开发完整的游戏机制Ursina的官方文档和示例项目是很好的学习资源。我特别推荐研究它的FPSController实现里面包含了很多实用的3D编程技巧。