Git Product home page Git Product logo

gltf-viewer's Introduction

gltf-viewer status

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

Rust glTF 2.0 viewer, written using the gltf crate and plain OpenGL.

Current state: All official sample models can be loaded and are rendered with the reference PBR shader. Example:
SciFiHelmet
Gallery with all sample models: https://bwasty.github.io/gltf-viewer/0.3.0/

Some glTF features are not yet implemented, most notably animations. See #3 for details.

Installation

Binaries (Win/Linux/macOS)

See Latest Release

From crate (requires Rust)

cargo install gltf-viewer

Latest version (unstable):

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

Usage

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

Both .gltf and .glb files are supported. Navigate the scene with the mouse: Rotate with left click + drag, pan with right click + drag, zoom with mouse wheel.

Example

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

Headless screenshot generation

Proper headless screenshot generation with the --headless flag currently only works on macOS. To work around that, a Docker setup that uses xvfb is provided. Usage examples:

# 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

Alternatively, you can also install xvfb and use ./run_xvfb.sh directly (Linux only).

gltf-viewer's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gltf-viewer's Issues

cannot open gltf

how to repo:

  • download the sample gltf to project root
  • cargo run -- release ./BarramundiFish.gltf
  • import error found

More details

piaoger$ cargo run --release ./BarramundiFish.gltf 
    Finished release [optimized] target(s) in 0.0 secs
     Running `target/release/gltf-viewer ./BarramundiFish.gltf`
[ERROR] glTF import failed: I/O error

gltf viewer in rust is interesting! please let me know if I missed anything. Thanks.

Doesn't work on a mac

I just tested the gltf-viewer on a Macbook Pro 2016 running MacOS 10.13.3 .
It just comes with a blank screen when run in the default mode and gets stuck when i tried to render screenshots. It doesn't quit with an error but just gets stuck .

Adding multiple gltf models

Hi @bwasty I was trying to add an extra default gltf model in the scene, so that i could add reflections for the loaded object rather than a solid color.
Is it possible to somehow add an object to the scene as we do in three.js ?

Light Implementation

Hi @bwasty

It seems like currently point lights are applied somehow on the object so that it is shown on the screen and lit up .
Is there someway i can change the point light implementation to an ambient light ?

Build error on dependency gltf

When trying to install the gltf-viewer with cargo install gltf-viewer I got the following error.
I already tried to find similar problems by browsing issues within this project and the dependency gltf but could not find anything.

The error looks as follows:

....
Compiling gltf v0.11.3
error[E0597]: `buf` does not live long enough
   --> C:\Users\linden\.cargo\registry\src\github.com-1ecc6299db9ec823\gltf-0.11.3\src\binary.rs:225:35
    |
119 | impl<'a> Glb<'a> {
    |      -- lifetime `'a` defined here
...
225 |                     Self::from_v2(&buf)
    |                     --------------^^^^-
    |                     |             |
    |                     |             borrowed value does not live long enough
    |                     argument requires that `buf` is borrowed for `'a`
...
233 |             }
    |             - `buf` dropped here while still borrowed

error: aborting due to previous error

Adding camera bounds cause incorrect bounding box estimation

else if self.children.is_empty() {
// Cameras (others?) have neither mesh nor children. Their position is the origin
// TODO!: are there other cases? Do bounds matter for cameras?
self.bounds = Aabb3::zero();
self.bounds = self.bounds.transform(&self.final_transform);

I stumbled onto this TODO after trying to take a screenshot of a model with a camera, but using bounding box estimation. It seems that the camera bounds are being taken into account when trying to set a nice camera position, causing the bounding box to be incorrectly estimated.

Here is the screenshot produced by gltf-viewer:
heart-render-1080

And here is the scene view in Houdini, notice the small camera dot in the bottom left:
screenshot from 2018-08-10 13-40-41

I'm attempting to get the camera node's bounds to not count in the scene bounds, but my Rust knowledge is very limited. I hacked together this diff that seems to resolve the problem:

diff --git a/src/render/node.rs b/src/render/node.rs
index a1dc13c..80a487f 100644
--- a/src/render/node.rs
+++ b/src/render/node.rs
@@ -106,6 +106,10 @@ impl Node {
             self.bounds = mesh.bounds
                 .transform(&self.final_transform);
         }
+        else if let Some(ref _camera) = self.camera {
+            // Skip updating bounds for Cameras, since they don't have bounds.
+        }
         else if self.children.is_empty() {
             // Cameras (others?) have neither mesh nor children. Their position is the origin
             // TODO!: are there other cases? Do bounds matter for cameras?

Is this the correct solution? Do you have any other ideas about how to fix this?

google draco support

Any plans to support KHR_draco_mesh_compression? Currently, I get an error when trying to view any draco compressed sample:

PS C:\sc\git\glTF-Sample-Models\2.0\Box\glTF-Draco> gltf-viewer.exe Box.gltf
[ERROR] glTF import failed: Gltf(Deserialize(ErrorImpl { code: Message("missing field bufferView"), line: 78, column: 5 }))

how to remove gltf-viewer

Hello,

I've tried your gltf-viewer to see how it works.

Can you help me to clean uninstall everything ?
I've tried to run a "cargo uninstall gltf-viewer"
but I get aonly a "removing gltf-viewer"

I'm not sure that all the stuff installed with gltf-viewer was also removed.

The 'nice' initial camera position is breaking

The 'nice' initial camera seems to be working for the 'Damaged Helmet' model perfectly but seems to be breaking for other models such as the one attached to this issue .
The attached model exits with a panic . I've also attached the panic error message .

GLTF File : https://transfer.sh/mWi4F/lighter.zip

thread 'main' panicked at 'called Result::unwrap()on anErrvalue: VBoxCutFailed', /checkout/src/libcore/result.rs:906:4 stack backtrace: 0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49 1: std::sys_common::backtrace::_print at /checkout/src/libstd/sys_common/backtrace.rs:68 2: std::panicking::default_hook::{{closure}} at /checkout/src/libstd/sys_common/backtrace.rs:57 at /checkout/src/libstd/panicking.rs:381 3: std::panicking::default_hook at /checkout/src/libstd/panicking.rs:397 4: std::panicking::rust_panic_with_hook at /checkout/src/libstd/panicking.rs:577 5: std::panicking::begin_panic at /checkout/src/libstd/panicking.rs:538 6: std::panicking::begin_panic_fmt at /checkout/src/libstd/panicking.rs:522 7: rust_begin_unwind at /checkout/src/libstd/panicking.rs:498 8: core::panicking::panic_fmt at /checkout/src/libcore/panicking.rs:71 9: core::result::unwrap_failed at /checkout/src/libcore/macros.rs:23 10: <core::result::Result<T, E>>::unwrap at /checkout/src/libcore/result.rs:772 11: gltf_viewer::viewer::GltfViewer::screenshot at src/viewer.rs:326 12: gltf_viewer::viewer::GltfViewer::multiscreenshot at src/viewer.rs:345 13: gltf_viewer::main at src/main.rs:108 14: __rust_maybe_catch_panic at /checkout/src/libpanic_unwind/lib.rs:101 15: std::rt::lang_start at /checkout/src/libstd/panicking.rs:459 at /checkout/src/libstd/panic.rs:365 at /checkout/src/libstd/rt.rs:58 16: main 17: __libc_start_main 18: _start

first two bytes is not a SOI marker

Hi @bwasty

The gltf-viewer is breaking for a model with the following error. The model loads up fine on gltf-viewer.donmccurdy.com

The model in question is available at this url : https://assets.scapic.com/scapicAssets/Objects/6y478g7qqjfvl72am_6y478g7qqjftt22zq_Dragon.zip

I've attached the error below :
[WARN] Ignoring further joint attributes, only supporting JOINTS_0. (mesh: 0, primitive: 0) [WARN] Ignoring further weight attributes, only supporting WEIGHTS_0. (mesh: 0, primitive: 0) thread 'main' panicked at 'Image loading failed.: FormatError("first two bytes is not a SOI marker")', /checkout/src/libcore/result.rs:906:4 stack backtrace: 0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49 1: std::sys_common::backtrace::_print at /checkout/src/libstd/sys_common/backtrace.rs:68 2: std::panicking::default_hook::{{closure}} at /checkout/src/libstd/sys_common/backtrace.rs:57 at /checkout/src/libstd/panicking.rs:381 3: std::panicking::default_hook at /checkout/src/libstd/panicking.rs:397 4: std::panicking::rust_panic_with_hook at /checkout/src/libstd/panicking.rs:577 5: std::panicking::begin_panic at /checkout/src/libstd/panicking.rs:538 6: std::panicking::begin_panic_fmt at /checkout/src/libstd/panicking.rs:522 7: rust_begin_unwind at /checkout/src/libstd/panicking.rs:498 8: core::panicking::panic_fmt at /checkout/src/libcore/panicking.rs:71 9: core::result::unwrap_failed at /checkout/src/libcore/macros.rs:23 10: <core::result::Result<T, E>>::expect at /checkout/src/libcore/result.rs:799 11: gltf_viewer::render::texture::Texture::from_gltf at src/render/texture.rs:92 12: gltf_viewer::render::material::load_texture at src/render/material.rs:132 13: gltf_viewer::render::material::Material::from_gltf at src/render/material.rs:85 14: gltf_viewer::render::primitive::Primitive::from_gltf at src/render/primitive.rs:212 15: gltf_viewer::render::mesh::Mesh::from_gltf::{{closure}} at src/render/mesh.rs:32 16: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &'a mut F>::call_once at /checkout/src/libcore/ops/function.rs:271 17: <core::option::Option<T>>::map at /checkout/src/libcore/option.rs:398 18: <core::iter::Map<I, F> as core::iter::iterator::Iterator>::next at /checkout/src/libcore/iter/mod.rs:1251 19: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T, I>>::from_iter at /checkout/src/liballoc/vec.rs:1800 20: <alloc::vec::Vec<T> as core::iter::traits::FromIterator<T>>::from_iter at /checkout/src/liballoc/vec.rs:1713 21: core::iter::iterator::Iterator::collect at /checkout/src/libcore/iter/iterator.rs:1300 22: gltf_viewer::render::mesh::Mesh::from_gltf at src/render/mesh.rs:29 23: gltf_viewer::render::node::Node::from_gltf at src/render/node.rs:57 24: gltf_viewer::render::root::Root::from_gltf::{{closure}} at src/render/root.rs:29 25: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &'a mut F>::call_once at /checkout/src/libcore/ops/function.rs:271 26: <core::option::Option<T>>::map at /checkout/src/libcore/option.rs:398 27: <core::iter::Map<I, F> as core::iter::iterator::Iterator>::next at /checkout/src/libcore/iter/mod.rs:1251 28: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T, I>>::from_iter at /checkout/src/liballoc/vec.rs:1800 29: <alloc::vec::Vec<T> as core::iter::traits::FromIterator<T>>::from_iter at /checkout/src/liballoc/vec.rs:1713 30: core::iter::iterator::Iterator::collect at /checkout/src/libcore/iter/iterator.rs:1300 31: gltf_viewer::render::root::Root::from_gltf at src/render/root.rs:28 32: gltf_viewer::viewer::GltfViewer::load at src/viewer.rs:252 33: gltf_viewer::viewer::GltfViewer::new at src/viewer.rs:167 34: gltf_viewer::main at src/main.rs:144 35: __rust_maybe_catch_panic at /checkout/src/libpanic_unwind/lib.rs:101 36: std::rt::lang_start at /checkout/src/libstd/panicking.rs:459 at /checkout/src/libstd/panic.rs:365 at /checkout/src/libstd/rt.rs:58 37: main 38: __libc_start_main 39: _start

Full glTF 2.0 support

Tracking issue for supported features.
Bold ones are "more important" and should be implemented soon.
For details about each entity, refer to the Properties Reference of the specification.

LAST UPDATE: 2018-08-17

  • Scene
    • choosing scenes
  • Node
    • Transformations (matrix, TRS)
    • children
    • mesh
    • camera
      • perspective
        • finite
        • infinite
      • orthographic
      • choosing cameras (CLI param --cam-index)
    • skin
    • weights
  • Mesh
    • primitives
    • weights
  • Primitive
    • Attributes
      • positions, normals, tangents, 2 tex coord sets, 1 color set, joints, weights
      • all tex coord formats
      • TEX_COORD_1
      • all color formats
      • COLOR_0
      • [ ] generate missing normals and tangents (optional, since only an 'implementation note' -> gltf-rs/gltf#22)
    • Indices
    • No Indices (-> glDrawArrays())
    • Material
    • Mode
      • Triangles
      • Others: Points, Lines, LineLoop, LineStrip, TriangleStrip, TriangleFan
    • targets
  • Material
    • pbrMetallicRoughness
      • base color (factor + texture)
      • full PBR lighting
    • normalTexture
    • occlusionTexture
    • emissiveTexture + emissiveFactor
    • alphaMode + alphaCutoff*
      (works, but not always correct - transparency/depth sorting is missing)
    • doubleSided
  • Texture
    • Sampler
    • Image
    • textureInfo (texCoord set index)
  • Animation
  • Skin

camera issue in non-headless mode while generating screenshots

nice to see this project will in active development again.
I found you have some improvement on camera and maybe still working on this now.
I'd like to report this issue for track. I attached the cmdline args and one resultant screenshot which camera seems wrong.

gltf-viewer -s ./view.png -c 6 ./../KhronosGroup/glTF-Sample-Models/2.0/BrainStem/glTF-Binary/BrainStem.glb`

view_1

i run the this command -> cargo install --git https://github.com/bwasty/gltf-viewer.git and i get this error which is added in the description

error[E0282]: type annotations needed --> /Users/ugurberkecanunlu/.cargo/registry/src/github.com-1ecc6299db9ec823/cocoa-0.17.0/src/appkit.rs:527:9 | 527 | msg_send![self, releaseGlobally]; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ consider giving resulta type | = note: this error originates in the macromsg_send` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0282]: type annotations needed
--> /Users/ugurberkecanunlu/.cargo/registry/src/github.com-1ecc6299db9ec823/cocoa-0.17.0/src/appkit.rs:2850:9
|
2850 | msg_send![self, setBezelStyle:style];
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ consider giving result a type
|
= note: this error originates in the macro msg_send (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0282]: type annotations needed
--> /Users/ugurberkecanunlu/.cargo/registry/src/github.com-1ecc6299db9ec823/cocoa-0.17.0/src/appkit.rs:3455:9
|
3455 | msg_send![self, setEditable:editable];
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ consider giving result a type
|
= note: this error originates in the macro msg_send (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0282]: type annotations needed
--> /Users/ugurberkecanunlu/.cargo/registry/src/github.com-1ecc6299db9ec823/cocoa-0.17.0/src/appkit.rs:3458:9
|
3458 | msg_send![self, setStringValue:label];
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ consider giving result a type
|
= note: this error originates in the macro msg_send (in Nightly builds, run with -Z macro-backtrace for more info)

For more information about this error, try rustc --explain E0282.
error: could not compile cocoa due to 4 previous errors
warning: build failed, waiting for other jobs to finish...
error: failed to compile gltf-viewer v0.4.2-alpha.0 (https://github.com/bwasty/gltf-viewer.git#1cb99cb5), intermediate artifacts can be found at `/var/folders/vd/nwlpps592kj1xz_wldzvtwlr0000gn/T/cargo-install5VjFeu``

Enable Headless support

Currently the gltf-viewer supports a faux headless mode where the window is made invisible while it's still running with the need of some kind a Xserver backend requirement. Is it possible to enable proper headless support so that the entire screenshot generation process could be run in an automated environment without the need of X .

"File name too long" error

I'm trying to load a simple file of a moon. When I load it with gltf-viewer I get this error:

Jesses-iMac:temp josh$ ./gltf-viewer -vvv moon.gltf
[DEBUG] Renderer     : AMD Radeon HD 6770M OpenGL Engine
[DEBUG] Vendor       : ATI Technologies Inc.
[DEBUG] Version      : 4.1 ATI-1.60.26
[DEBUG] GLSL         : 4.10
[DEBUG] Profile      : Core
[DEBUG] Context Flags: Debug: false, Forward Compatible: true
[DEBUG] Extensions   : GL_ARB_blend_func_extended, GL_ARB_draw_buffers_blend, GL_ARB_draw_indirect, GL_ARB_ES2_compatibility, GL_ARB_explicit_attrib_location, GL_ARB_gpu_shader5, GL_ARB_instanced_arrays, GL_ARB_internalformat_query, GL_ARB_occlusion_query2, GL_ARB_sample_shading, GL_ARB_sampler_objects, GL_ARB_separate_shader_objects, GL_ARB_shader_bit_encoding, GL_ARB_shader_subroutine, GL_ARB_shading_language_include, GL_ARB_tessellation_shader, GL_ARB_texture_buffer_object_rgb32, GL_ARB_texture_cube_map_array, GL_ARB_texture_gather, GL_ARB_texture_query_lod, GL_ARB_texture_rgb10_a2ui, GL_ARB_texture_storage, GL_ARB_texture_swizzle, GL_ARB_timer_query, GL_ARB_transform_feedback2, GL_ARB_transform_feedback3, GL_ARB_vertex_type_2_10_10_10_rev, GL_ARB_viewport_array, GL_EXT_debug_label, GL_EXT_debug_marker, GL_EXT_texture_compression_s3tc, GL_EXT_texture_filter_anisotropic, GL_EXT_texture_mirror_clamp, GL_EXT_texture_sRGB_decode, GL_APPLE_client_storage, GL_APPLE_container_object_shareable, GL_APPLE_flush_render, GL_APPLE_object_purgeable, GL_APPLE_rgb_422, GL_APPLE_row_bytes, GL_APPLE_texture_range, GL_ATI_texture_mirror_once, GL_NV_texture_barrier
[INFO] Imported glTF in         630 µs
[DEBUG] Found no TANGENTS for primitive 0 of mesh 0 (tangent calculation not implemented yet)
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { repr: Os { code: 63, message: "File name too long" } }', src/libcore/result.rs:916:5
note: Run with `RUST_BACKTRACE=1` for a backtrace.

This file can be corrected loaded in this online GLTF viewer https://gltf-viewer.donmccurdy.com/

Github won't let me attach a gltf file so I zipped it up first.

moon.gltf.zip

Shadows?

I've adapted the current source of gltf-viewer to implement a glTF rendering module with a C API, for integration with an executable based on OpenGL. It works well enough, but how difficult would it be to add shadow rendering?

Build failure with rustc 1.31.1

This occurs when trying to install gltf-viewer using cargo install.

   Compiling gltf-viewer v0.4.0
error[E0659]: `Texture` is ambiguous (glob import vs glob import in the same module)
 --> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/gltf-viewer-0.4.0/src/render/root.rs:8:26
  |
8 | use render::{Mesh, Node, Texture, Material};
  |                          ^^^^^^^ ambiguous name
  |
note: `Texture` could refer to the struct imported here
 --> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/gltf-viewer-0.4.0/src/render/mod.rs:18:9
  |
18| pub use self::texture::*;
  |         ^^^^^^^^^^^^^^^^
  = help: consider adding an explicit import of `Texture` to disambiguate
note: `Texture` could also refer to the struct imported here
 --> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/gltf-viewer-0.4.0/src/render/mod.rs:13:9
  |
13| pub use self::primitive::*;
  |         ^^^^^^^^^^^^^^^^^^
  = help: consider adding an explicit import of `Texture` to disambiguate

error[E0659]: `Texture` is ambiguous (glob import vs glob import in the same module)
 --> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/gltf-viewer-0.4.0/src/render/material.rs:7:21
  |
7 | use render::{ Root, Texture };
  |                     ^^^^^^^ ambiguous name
  |
note: `Texture` could refer to the struct imported here
 --> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/gltf-viewer-0.4.0/src/render/mod.rs:18:9
  |
18| pub use self::texture::*;
  |         ^^^^^^^^^^^^^^^^
  = help: consider adding an explicit import of `Texture` to disambiguate
note: `Texture` could also refer to the struct imported here
 --> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/gltf-viewer-0.4.0/src/render/mod.rs:13:9
  |
13| pub use self::primitive::*;
  |         ^^^^^^^^^^^^^^^^^^
  = help: consider adding an explicit import of `Texture` to disambiguate

error: aborting due to 2 previous errors

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.