Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More complicated 3d scene example #6551

Open
JMS55 opened this issue Nov 11, 2022 · 2 comments
Open

More complicated 3d scene example #6551

JMS55 opened this issue Nov 11, 2022 · 2 comments
Labels
A-Rendering Drawing game state to the screen C-Examples An addition or correction to our examples C-Testing A change that impacts how we test Bevy or how users test their apps D-Trivial Nice and easy! A great choice to get started with Bevy

Comments

@JMS55
Copy link
Contributor

JMS55 commented Nov 11, 2022

What problem does this solve or what need does it fill?

When developing new rendering features, we need test scenes. Bevy's current 3d examples are generally too simple, often exercising only one specific feature. Something like bistro is too heavy for quick iteration, and more complicated to setup (not a simple cargo run --example).

What solution would you like?

Add a new 3d example scene with medium complexity.

Important requirements:

  • Static meshes, using normal maps and materials
  • Dynamic meshes, that move around the scene in a set pattern
    • Should be able to pause their movement with a hotkey
  • Transparent meshes
  • Alpha-masked meshes
  • Large meshes that block other meshes (for depth related testing) (e.g., a pillar)
  • Point lights and directional lights
  • Controllable camera
    • Perspective/Orthographic projection toggle
  • Not too large/demanding- shouldn't be bigger than a room or two, and quick to load/run
    • Perhaps 1 indoor, 1 outdoor scene
  • Multiple viewports
  • Developer options - toggle for debug visualizations, turning specific features on or off, logs, etc

A good starting point would be to build on example/tools/scene_viewer.rs.

@JMS55 JMS55 added C-Enhancement A new feature S-Needs-Triage This issue needs to be labelled labels Nov 11, 2022
@alice-i-cecile alice-i-cecile added A-Rendering Drawing game state to the screen C-Examples An addition or correction to our examples C-Testing A change that impacts how we test Bevy or how users test their apps D-Trivial Nice and easy! A great choice to get started with Bevy and removed C-Enhancement A new feature S-Needs-Triage This issue needs to be labelled labels Nov 11, 2022
@superdump
Copy link
Contributor

The Khronos glTF samples have a lot of samples that are good for testing features work correctly. The alpha masking/blending one is really good.

@zardini123
Copy link
Contributor

I am interested in tackling this! I noticed in the style guide for examples it states:

Try to avoid adding new assets unless strictly necessary to keep the repo small. Don't add "large" asset files.

To keep asset count low, should I attempt to make most of the scene with shape primitives? Or should I attempt to make a single glTF scene composed of the requirements listed?

bors bot pushed a commit that referenced this issue Dec 25, 2022
# Objective

This PR reorganizes majority of the scene viewer example into a module of plugins which then allows reuse of functionality among new or existing examples.  In addition, this enables the scene viewer to be more succinct and showcase the distinct cases of camera control and scene control.

This work is to support future work in organization and future examples.  A more complicated 3D scene example has been requested by the community (#6551) which requests functionality currently included in scene_viewer, but previously inaccessible.  The future example can now just utilize the two plugins created here.  The existing example [animated_fox example] can utilize the scene creation and animation control functionality of `SceneViewerPlugin`.

## Solution

- Created a `scene_viewer` module inside the `tools` example folder.
- Created two plugins:  `SceneViewerPlugin` (gltf scene loading, animation control, camera tracking control, light control) and `CameraControllerPlugin` (controllable camera).
- Original `scene_viewer.rs` moved to `scene_viewer/main.rs` and now utilizes the two plugins.
bors bot pushed a commit that referenced this issue Dec 25, 2022
# Objective

This PR reorganizes majority of the scene viewer example into a module of plugins which then allows reuse of functionality among new or existing examples.  In addition, this enables the scene viewer to be more succinct and showcase the distinct cases of camera control and scene control.

This work is to support future work in organization and future examples.  A more complicated 3D scene example has been requested by the community (#6551) which requests functionality currently included in scene_viewer, but previously inaccessible.  The future example can now just utilize the two plugins created here.  The existing example [animated_fox example] can utilize the scene creation and animation control functionality of `SceneViewerPlugin`.

## Solution

- Created a `scene_viewer` module inside the `tools` example folder.
- Created two plugins:  `SceneViewerPlugin` (gltf scene loading, animation control, camera tracking control, light control) and `CameraControllerPlugin` (controllable camera).
- Original `scene_viewer.rs` moved to `scene_viewer/main.rs` and now utilizes the two plugins.
alradish pushed a commit to alradish/bevy that referenced this issue Jan 22, 2023
…ngine#6936)

# Objective

This PR reorganizes majority of the scene viewer example into a module of plugins which then allows reuse of functionality among new or existing examples.  In addition, this enables the scene viewer to be more succinct and showcase the distinct cases of camera control and scene control.

This work is to support future work in organization and future examples.  A more complicated 3D scene example has been requested by the community (bevyengine#6551) which requests functionality currently included in scene_viewer, but previously inaccessible.  The future example can now just utilize the two plugins created here.  The existing example [animated_fox example] can utilize the scene creation and animation control functionality of `SceneViewerPlugin`.

## Solution

- Created a `scene_viewer` module inside the `tools` example folder.
- Created two plugins:  `SceneViewerPlugin` (gltf scene loading, animation control, camera tracking control, light control) and `CameraControllerPlugin` (controllable camera).
- Original `scene_viewer.rs` moved to `scene_viewer/main.rs` and now utilizes the two plugins.
ItsDoot pushed a commit to ItsDoot/bevy that referenced this issue Feb 1, 2023
…ngine#6936)

# Objective

This PR reorganizes majority of the scene viewer example into a module of plugins which then allows reuse of functionality among new or existing examples.  In addition, this enables the scene viewer to be more succinct and showcase the distinct cases of camera control and scene control.

This work is to support future work in organization and future examples.  A more complicated 3D scene example has been requested by the community (bevyengine#6551) which requests functionality currently included in scene_viewer, but previously inaccessible.  The future example can now just utilize the two plugins created here.  The existing example [animated_fox example] can utilize the scene creation and animation control functionality of `SceneViewerPlugin`.

## Solution

- Created a `scene_viewer` module inside the `tools` example folder.
- Created two plugins:  `SceneViewerPlugin` (gltf scene loading, animation control, camera tracking control, light control) and `CameraControllerPlugin` (controllable camera).
- Original `scene_viewer.rs` moved to `scene_viewer/main.rs` and now utilizes the two plugins.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Rendering Drawing game state to the screen C-Examples An addition or correction to our examples C-Testing A change that impacts how we test Bevy or how users test their apps D-Trivial Nice and easy! A great choice to get started with Bevy
Projects
None yet
Development

No branches or pull requests

4 participants