02 - 安装与环境配置¶
硬件与系统¶
| 项目 | Embree(CPU) | Vulkan(GPU) | OptiX(GPU) |
|---|---|---|---|
| 硬件 | x86_64 CPU | 支持 Vulkan 光线查询的 NVIDIA、AMD 或 Intel 显卡 | NVIDIA 显卡 |
| 显存 | — | 4 GB 以上,推荐 8 GB | 4 GB 以上,推荐 8 GB |
| 驱动 | 不需要 | 较新的显卡驱动 | 较新的 NVIDIA 驱动 |
| 操作系统 | Windows 10/11、Linux | Windows 10/11、Linux | Windows 10/11、Linux |
| Python | 3.10–3.13 | 3.10–3.13 | 3.10–3.13 |
没有合适的显卡也能使用 LESS 的全部功能,只是大型模拟在 CPU 上会慢一些。有 NVIDIA 显卡时通常 OptiX 最快;AMD 和 Intel 显卡使用 Vulkan。
安装¶
安装包已经包含计算所需的库,不需要编译器或开发工具包。使用显卡计算时,只需安装显卡厂商的驱动。
可选组件¶
部分功能依赖额外的 Python 库,按需安装:
| 组件 | 用途 | 安装的库 |
|---|---|---|
lidar |
从 .las/.laz 点云重建场景(第 17 章) |
laspy、cloth-simulation-filter |
atmosphere |
使用 6S 大气模型 less.SixSAtmosphere(第 16 章) |
Py6S |
检查安装¶
import less
print("LESS", less.__version__)
for backend in less.list_backends(probe=True):
print(backend.name, backend.available, backend.unavailable_reason or "")
正常情况下会看到类似的输出:
某个后端显示 False 时,后面会给出原因,例如没有找到支持的显卡或驱动版本过旧。
选择后端和设备¶
scene = less.Scene() # 自动选择
scene = less.Scene(backend="optix") # NVIDIA OptiX
scene = less.Scene(backend="vulkan") # Vulkan
scene = less.Scene(backend="embree") # CPU
scene = less.Scene(backend="vulkan", device=1) # 第二块 Vulkan 设备
| 参数 | 默认值 | 说明 |
|---|---|---|
backend |
"auto" |
"auto"、"optix"、"vulkan" 或 "embree" |
device |
0 |
同一后端下的显卡序号 |
指定的后端不可用时,LESS 会报错并说明原因,不会改用其他后端。做性能比较或需要固定硬件时,请显式指定后端。
查看本机能运行哪些功能:
比较三个后端的速度¶
import time
import less
def run(backend):
scene = less.Scene(backend=backend)
scene.size = 10.0
scene.terrain = less.Terrain(property=less.Lambertian(reflectance=0.3))
scene.illumination = less.Illumination(
source=less.Sun(zenith=30, azimuth=150),
atmosphere=less.SimpleSpectralAtmosphere(turbidity=2.0))
sensor = less.OpticalImager(
less.Orthographic(image_size=256), bands=[650, 550, 450], quality=64)
scene.simulate(sensor) # 第一次运行包含场景构建
start = time.perf_counter()
scene.simulate(sensor)
return time.perf_counter() - start
for name in ("optix", "vulkan", "embree"):
try:
print(f"{name}: {run(name) * 1000:.1f} ms")
except Exception as error:
print(f"{name}: 不可用({error})")
第一次在某块显卡上运行时,驱动需要编译计算程序,因此会明显慢一些。编译结果会缓存在用户目录中,之后的运行会直接使用。如需把缓存放到固定位置,可以在启动 Python 前设置环境变量 LESS_CACHE_DIR。
内置示例¶
LESS 自带几个完整场景,可以用来确认安装是否正常:
运行后会在浏览器中打开三维查看器(见第 6 章)。
常见问题¶
显卡后端显示不可用。 先运行 less.list_backends(probe=True) 查看原因。多数情况下更新显卡驱动即可;AMD 和 Intel 显卡还需要支持 Vulkan 光线查询。NVIDIA 用户可以用 nvidia-smi 查看驱动状态。
显存不足。 减少三角形数量或场景范围,关闭其他占用显存的程序,或改用 backend="embree"。
image.show() 不弹出窗口。 matplotlib 使用了非交互式绘图后端。可以在脚本开头指定一个交互式后端:
只需要保存图片时,直接使用 image.save("out.png")。