Totally not inspired Rust 3D library
Clone or download
bors[bot] and LPGhatguy Merge #209
209: Preserve existing scale in Object::look_at r=kvark a=LPGhatguy

`Object::look_at` resets the scale of the object to 1. This PR makes it not do that.

This can be demonstrated with a small snippet: https://gist.github.com/LPGhatguy/dc9b4323b3ce7ca950ae936b95038acd

With the correct behavior, the sphere should fill the screen vertically. In 0.3.1 as well as the current master, however, the sphere's scale is reset to 1.0 and no longer fills the screen after `look_at`.

Co-authored-by: Lucien Greathouse <me@lpghatguy.com>
Latest commit e497bfc Jul 28, 2018

README.md

three-rs

Build Status Docs Crates.io Gitter

Totally not inspired Rust 3D library! Ok, maybe, just a tiny bit... by Three.JS.

If you a looking for something simple to prototype 3D graphics with, you found it.

Screenshots

Aviator CarObj glTF-skinning

Motivation and Goals

Three-rs is focused at the ergonomics first and foremost. Being able to prototype quickly and code intuitively is more important than capturing all the 3D features. We already have a solid foundation with gfx-rs, so let's make some use of it by providing a nice higher-level abstraction.

We do leave the room for optimization opportunity here. Given the low-level declarative style of the API, the implementation can do a lot of tricks to ensure decent performance by default:

  • use of efficient low-level native graphics APIs
  • reordering the calls into passes, minimizing state changes
  • automatic instancing

Interestingly, you can observe an new trend in rust-gamedev community to mimic existing libraries: Amethyst was created to be Rust version of Autodesk Stingray engine (formely Bitsquid), ggez is a re-interpretation of Love2D engine, and now three-rs attempting to capture Three.JS usability. This is not to say that we failed to find our own path, I just see the current step inevitable.

License

Licensed under either of the following terms at your choice:

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.