跳转至

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。

安装

pip install "less3d==3.1.0"

安装包已经包含计算所需的库,不需要编译器或开发工具包。使用显卡计算时,只需安装显卡厂商的驱动。

可选组件

部分功能依赖额外的 Python 库,按需安装:

组件 用途 安装的库
lidar 从 .las/.laz 点云重建场景(第 17 章) laspy、cloth-simulation-filter
atmosphere 使用 6S 大气模型 less.SixSAtmosphere(第 16 章) Py6S
pip install "less3d[lidar]==3.1.0"
pip install "less3d[lidar,atmosphere]==3.1.0"

检查安装

import less

print("LESS", less.__version__)
for backend in less.list_backends(probe=True):
    print(backend.name, backend.available, backend.unavailable_reason or "")

正常情况下会看到类似的输出:

LESS 3.1.0
optix True
embree True
vulkan True

某个后端显示 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 会报错并说明原因,不会改用其他后端。做性能比较或需要固定硬件时,请显式指定后端。

查看本机能运行哪些功能:

print(less.available_features())
print(less.can_use("lidar_waveform", backend="embree"))

比较三个后端的速度

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 自带几个完整场景,可以用来确认安装是否正常:

python -m less.examples autumn_forest
python -m less.examples maize_field

运行后会在浏览器中打开三维查看器(见第 6 章)。

常见问题

显卡后端显示不可用。 先运行 less.list_backends(probe=True) 查看原因。多数情况下更新显卡驱动即可;AMD 和 Intel 显卡还需要支持 Vulkan 光线查询。NVIDIA 用户可以用 nvidia-smi 查看驱动状态。

显存不足。 减少三角形数量或场景范围,关闭其他占用显存的程序,或改用 backend="embree"。

image.show() 不弹出窗口。 matplotlib 使用了非交互式绘图后端。可以在脚本开头指定一个交互式后端:

import matplotlib
matplotlib.use("TkAgg")

只需要保存图片时,直接使用 image.save("out.png")。

下一步