"Sasha" by saber7711 (CC-BY), read with k3d.glb, 32 samples, cinematic_denoise=1.0.
New
- glTF import -
k3d.glb()/k3d.gltf()read glTF 2.0 with numpy alone into aGroupof plain K3D objects: node hierarchy ask3d.transform, Y-up to Z-up, textures withKHR_texture_transform, GPU instancing, sparse accessors, Draco (optionalDracoPy), emissive / unlit / transmission / ior / volume materials. Imported scenes proxy intocinematic. - Mesh material -
emissive,normal_map,metalness_roughness_map,occlusion_map(+uvs2),alpha_mode/alpha_cutoff, RGBAcolors,texture_wrap, mipmaps,transmission/ior/thickness/ attenuation - all plain Python / numpy traits. cinematic_denoiseis Open Image Denoise (oidn-web, WebGPU), guided by albedo and normals on surfaces, colour only inside volumes. It runs once the sample budget is reached, tile by tile with visible progress; 0 is off, 1 denoised, values between mix with the traced image. Without WebGPU the trace is shown as is. The weights (3.5 MB, Apache 2.0) ship next to the bundle and load on first use. On a CT heart against a 2048-sample reference, 16 samples denoised are closer than 128 traced, with no structure added beyond the reference's own noise; fine 1-2 px texture is smoothed at low budgets.
Breaking
colormultipliescolors, the colormap andtextureon meshes, points and vectors; left out, it is white next to another colour source.- A
Grouphas no properties of its own: setting one raises (exceptmodel_matrix), andplot += [list]raises aTypeErrornaminga + b. cinematic_denoiseis a mix, not a strength in noise sigmas; anything from 1 up is fully denoised.
Fixed
- Cinematic drew only part of a scene traced after one whose index count matched its triangle count (stale cached index in three-mesh-bvh 0.9.15).
- With depth of field, the denoiser drew sharp edges into what the lens blurs: its albedo and normal guides now go through the same lens.
- glTF export writes linear colours.
- Grid tick labels no longer show on every corner at once.
- Line controls follow the shader.
- oidn-web 0.4.0 returns all-NaN when its source tile does not fit the image; worked around by padding.
Docs and examples
glb/gltfAPI pages, a "glTF in and out" guide,examples/gltf_import.ipynb; a gallery ring from our own CC-BY conversion of "Sasha" by saber7711, the boombox on theglbpage.- Every cinematic example and thumbnail: 32 samples,
cinematic_denoise=1.0. - The showcase gallery in a new order.
- Credits for three-gpu-pathtracer, three-mesh-bvh, Open Image Denoise and oidn-web.
- Release notes: build from the lockfile; CITATION.cff records 3.1.2.
Internal
Renderer.js(2500 lines) split by what it serves:cinematic/present.js,passes/ao.js,passes/depthPeel.js, andScene.jsintogrid.jsandlighting.js. No change to a single reference image.
Dependencies
New: oidn-web 0.4.0, DracoPy (optional, for Draco-compressed glTF; in the dev and examples extras). Unchanged: three.js 0.186.1, three-mesh-bvh 0.9.15, three-gpu-pathtracer 0.0.24.