Giter VIP home page Giter VIP logo

houseki's Introduction

houseki's People

Contributors

dependabot[bot] avatar github-actions[bot] avatar jaimegensler avatar kayhhh avatar zoan37 avatar

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

Watchers

 avatar  avatar  avatar

houseki's Issues

Audio

Add an audio package, and support (at least partially) the KHR_audio glTF extension.

Scripting system

I want to creating some sort of scripting system for the engine, or more specific support a glTF extension for adding sand boxed behaviors to a model. I'm thinking about it in the context of the parent project UNAVI, but it would be a generic system around glTF.

I see two options, WASM scripting, or a node-based behavior graph.

Am leaning towards a WASM approach but I'm still a bit unsure. Would appreciate input if anyone has ideas on this. Some pros and cons of how I see things:

WASM

  • If you know how to code, WASM could be faster and easier to work with, especially for larger, more complex scripts
  • Would allow for the creation of re-usable libraries (!)
  • Better performance?

Nodes

  • More accessible to non-coders
  • Could be worked on from within the 3D environment itself like Gmod, or in VR like Neos (!)

Add physics platforms to player example

Add some moving kinematic platforms, spinning platforms, etc to the player example. Also may need to add some functionality to the player controls to make them play nice.

orbit: Mobile pointer events being cancelled

Orbit controls aren't working very well on mobile. After you press down and start dragging, a pointercancel event is being sent, which stops all input from being sent to the orbit controls. Not sure why this event is being sent.

WebXR support

Not entirely sure what this looks like yet, but I want the player controls to have a VR mode. Maybe its a separate package, @lattice-engine/xr that shims into the @lattice-engine/player system schedules to add support for it.

VR brings a lot with it, so this may get split up into multiple issues in the future. Some ideas:

  • Enter the camera into VR
    • basic VR rendering
  • Support moving around with joystick
    • Could be nice to add other movement options in the future, like teleport
  • Support rotating around with joystick
    • Could add option for snap rotations, or smooth rotation
  • Do some avatar IK to track player hands
  • Grabbable physics objects
    • Send input from controllers into ECS as events

Create docs for each package

Things aren't very documented right now, and the APIs for using lattice can be pretty ugly. I think there's a good opportunity to go through each package and add documentation (either in the readme, or create a proper docs site), and in the process think through the current APIs (components, systems, helper functions, etc) and clean things up.

glTF import info

On glTF import, we should store some information about the import in a component on the glTF entity.
Main thing I need atm is a mapping of glTF index -> entity ID.

Can store this in the ECS as an array, ie nodes: u64[]. Nodes index 0 would be the entity ID for node 0.

Export all systems for each package

Right now, most packages don't export all their systems (because I was lazy). For scheduling within Thyseus you may need to reference these systems, so they should be exported.

Mobile player controls

Moving the camera around seems to work fine already on mobile, but there needs to be a way to move the player around, probably with a joystick on the left side of the screen, with the right side of the screen for rotating the camera.

Main question here is how to display this joystick. We could use a secondary, "UI" canvas and draw it in a 2D webgl context, but this seems annoying. I think the best approach would be rendering a UI layer after the 3D render, using an orthographic camera in Threejs. Things can be formalized into an actual UI render pass at some point if needed, but for now can keep it simple.

Requirements

  • Move player around with joystick
    • Joystick on left half of screen, rotate camera with right half
  • Rotate camera around while moving
  • Ability to switch between third and first person
    • I guess just zooming in and out like with desktop controls?
  • Ability to jump
    • Button in the bottom right of screen seems reasonable for UI
    • Should probably only be an examples thing, leaving UI up to the user of the library

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.