#gltf #3d-model #viewer #model #3d #scene

app gltf-viewer

简单的 glTF 2.0 查看器

10 个版本

0.4.1 2019 年 1 月 27 日
0.4.0 2018 年 8 月 22 日
0.3.1 2018 年 3 月 16 日
0.3.0 2018 年 2 月 23 日
0.0.3 2017 年 7 月 28 日

#112渲染

37 个月下载量

Unlicense

120KB
2.5K SLoC

Rust 2K SLoC // 0.1% comments GLSL 273 SLoC // 0.2% comments

gltf-viewer status

crates.io GitHub release Build Status Build status Docker build status Maintenance

Rust glTF 2.0 查看器,使用 gltf crate 和纯 OpenGL 编写。

当前状态:所有 官方示例模型 都可以加载,并使用 参考 PBR 着色器 进行渲染。示例
SciFiHelmet
所有示例模型的画廊: https://bwasty.github.io/gltf-viewer/0.3.0/

一些 glTF 功能尚未实现,最重要的是 动画。有关详细信息,请参阅 #3

安装

二进制文件(Win/Linux/macOS)

请参阅 最新版本

从 crate(需要 Rust

cargo install gltf-viewer

最新版本(不稳定)

cargo install --git https://github.com/bwasty/gltf-viewer.git

用法

USAGE:
    gltf-viewer [OPTIONS] <FILE>

OPTIONS:
    -v, --verbose                    Enable verbose logging (log level INFO). Can be repeated up to 3 times to increase
                                     log level to DEBUG/TRACE)
    -s, --screenshot <FILE>          Create screenshot (PNG)
    -w, --width <WIDTH>              Width in pixels [default: 800]
    -h, --height <HEIGHT>            Height in pixels [default: 600]
    -c, --count <COUNT>              Saves N screenshots of size WxH, rotating evenly spaced around the object [default:
                                     1]
        --headless                   Use real headless rendering for screenshots (default is a hidden window)
                                     [EXPERIMENTAL - see README for details]
        --straight                   Position camera in front of model if using default camera (i.e. glTF doesn't
                                     contain a camera or `--cam-index -1` is passed).
        --scene <scene>              Index of the scene to load [default: 0]
        --cam-index <CAM-INDEX>      Use the glTF camera with the given index (starting at 0).
                                     Fallback if there is none: determine 'nice' camera position based on the scene's
                                     bounding box. Can be forced by passing -1.
                                     Note: All other camera options are ignored if this one is given. [default: 0]
        --cam-pos <CAM-POS>          Camera (aka eye) position override as comma-separated Vector3. Example: 1.2,3.4,5.6
        --cam-target <CAM-TARGET>    Camera target (aka center) override as comma-separated Vector3. Example:
                                     1.2,3.4,5.6
        --cam-fovy <CAM-FOVY>        Vertical field of view ('zoom') in degrees. [default: 75]
        --help                       Prints help information
    -V, --version                    Prints version information

ARGS:
    <FILE>    glTF file name

支持 .gltf 和 .glb 文件。使用鼠标导航场景:用左键点击并拖动旋转,用右键点击并拖动平移,用鼠标滚轮缩放。

示例

$ curl -O https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Box/glTF-Binary/Box.glb
$ gltf-viewer Box.glb

无头截图生成

使用 --headless 标志进行适当的无头截图生成目前仅在 macOS 上工作。为了解决这个问题,提供了一个使用 xvfb 的 Docker 设置。用法示例

# Build docker image and run it with the gltf mounted in a volume.
# The image will be saved next to the gltf file.
./screenshot_docker.sh Box.glb
./screenshot_docker.sh ../models/Box.gltf -w 1920 -h 1080 --count 3 -vv
# Use pre-built docker image from Docker Hub
DOCKER_IMAGE=bwasty/gltf-viewer ./screenshot_docker.sh Box.glb

或者,您也可以安装 xvfb 并直接使用 ./run_xvfb.sh(仅限 Linux)。

依赖关系

~21MB
~231K SLoC