Git Product home page Git Product logo

nunustudio's Introduction

GitHub versionnpm versionGitHub issues GitHub stars FOSSA Status

  • nunuStudio is an open source game engine for the web it allows designers and web developers to easily develop 3D experiences for the web.
  • Powered by three.js can run directly in the web or be exported as desktop application trough nwjs.io.
  • Fully featured visual editor, supports a wide range of file formats, the tools are open source and completely free to use for both personal and commercial usage.
  • Visual scene editor, code editor, visual tools to edit textures, materials, particle emitters and a powerful scripting API that allows the creation of complex applications using JavaScript or Python.
  • Fully featured web version of the editor is available on the project page.
  • The web version is tested with Firefox, Chrome and Microsoft Edge, mobile browsers are supported as well.

  • API Documentation with full details about the inner working of every module are available. These can also be generated from the project source code by running npm run docs.
  • Basic tutorials are available on the project page. The basic tutorials explain step-by-step how to use the editor.
  • To build the project first install Node.js LTS and NPM:
    • The building system generates minified builds for the runtime and for the editor
    • Documentation generation uses YuiDocs
    • Install dependencies from npm by running npm install --legacy-peer-deps
    • Build editor, runtime and documentation, run npm run build
  • Webpage of the project is built using Angular and is hosted on GitHub Pages

Screenshots

Features

  • Visual application editor
    • Drag and drop files directly into the project (images, video, models, ...)
    • Manage project resources.
    • Edit material, textures, shaders, code, ...
  • Built on three.js library w/ physics by cannon.js
    • Real time lighting and shadow map support
    • three.js libraries can be imported into the editor
    • Wide range of file formats supported (gltf, dae, obj, fbx, 3ds, ...)
  • NW.js and Cordova exports for desktop and mobile deployment
  • Compatible with WebXR for Virtual Reality and Augmented Reality

Build

The project uses Webpack to build and bundle its code base.

  • The building system generates minified builds for the runtime and for the editor
  • JavaScript is optimized and minified using Uglify
  • Documentation generation uses YuiDocs

Steps needed to build the project:

  1. To build the project first install Java, Node.js and NPM and ensure that java command is working properly.
  2. Install dependencies from npm by running npm install.
    1. If running on Node >=16 run npm install --legacy-peer-deps instead
  3. Install the dependencies for the project webpage running cd source/page && npm install
  4. Building/running
    1. Building: to build editor, runtime and documentation, run npm run build
    2. Running: To start the editor locally for development and testing run npm run start

Embedding Application

  • Application developed with can be embedded into already existing web pages, and are compatible with frameworks like Angular or React.
  • To embed applications in HTML pages the following code can be used, the application is bootstrapped using the loadApp(file, id) method.
<html>
    <head>
        <script src="nunu.min.js"></script>
    </head>
    <body onload="Nunu.App.loadApp('pong.nsp', 'canvas')">
        <canvas width="800" height="480" id="canvas"></canvas>
    </body>
</html>

Vue.js with Nuxtjs

  • Build nunu.min.js and place into static/js folder of your nuxt instance
  • Place canvas element into your template area where you want it, for example:
<template>
  <div>
    <canvas
      id="canvas"
      width="800"
      height="480"
    />
</div>
</template>
  • Add the script to your head function of the page you want the 3D integration on (or place is into your global head)
head() {
return {
      script: [
        {
          hid: 'Nunu',
          src: 'assets/js/nunu.min.js',
          defer: true,
          callback: () => {
            Nunu.App.loadApp('assets/file.nsp', 'canvas') //add file to load in here
          },
        },
      ],
    },
  }
  • You are now able to address Nunu as usual within the app.

License

  • The project is distributed under a MIT license that allow for commercial usage of the platform without any cost.
  • The license is available on the project GitHub page

FOSSA Status

nunustudio'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  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

nunustudio's Issues

Scene tab blocking on error

Scene tab blocking on error

Description
  • After an error the scene tab blocks
  • It needs to be closed and reopened for the editor to return back to normal
Platform
  • Web Version [X]
  • Windows [X]
  • Linux [X]

Looks of topmenu bar

Height is too low: it is 25px high but for ex 32px makes it look better
Font is too small
Titles of the menu items are too far apart

Styling is embedded in the divs?

It seems that you define all the styling properties when you create the html elements. Is that a good practice?

Also the divs have no ID or class name which makes debugging a problem (especially when inspecting elements and trying to retrieve some)

Electron

Why not use Electron rather than NW.js? The community is much bigger and it's much nicer to work with Electron. Cross platform desktop builds are also much easier.

I'm bringing this up because I'm on macOS and there's no desktop build available.

View port Navigation feels non intuitive

Description

So the view port navigation feels non intuitive and it takes more than a few seconds to pick up. I get that you are trying to replicate movement controls similar to Maya or 3D Studio Max. But It should be simpler than a DCC app navigation. My advice would be the following to improve the experience is as followed.

Using the WASD keys to navigate around the scene similar to a modern FPS or Third person shooter game controls. Using this in conjunction with right click and the mouse to drive the direction of the camera.

  • W = Move Forward
  • S = Move Backward
  • A = Move Left
  • D = Move Right

Unreal Engine 4 uses this navigation style and it is super intuitive to navigate around a view port.

Version
  • v0.8.9.22-alpha
Platform
  • Web Version [X]
  • Windows [X]
  • Linux [X]

Drag and sort tabs

Enable tabs to be sorted on mouse drag, and prepare code for future support of multiple tabs open at the same time (tab division split)

gltf file support

Description

So the Khronos group is making a new 3d file format for VR and the web called gltf. It has the backing of several major companies with interests in VR. Anyway - Would it be possible to get gltf support in nunu studio? There is already an gltf loader for three.js here.

Version
  • v0.8.9.22-alpha
Platform
  • Web Version [X]
  • Windows [X]
  • Linux [X]

Cannot adjust 2D view

It seems it only looks in one predefined direction and there is no way to change it

Web platform becomes unresponsive and crashes

Over time (after a few runs), the web platform (which I'm running on Chrome 58 on macOS) becomes very unresponsive and slow, sometimes even crashing. The scene I'm working on only has a couple of images and the script is nothing out of the ordinary, if that helps.

I realize this is very vague and unhelpful. I'm looking for pointers as to where I should look in order to understand the issue and perhaps come back with more feedback. How can I profile it?

Parameter graph editor UI

Some scene parameters change over time, such as camera location. nunuStudio can offer a 'parameter graph editor UI' to help animators fine-tune parameter transitions.

Examples

Blender3D

This idea is best illustrated by the Blender parameter graph UI (a.k.a. F-Curves):
Blender parameter graph UI

Synfig Studio

peek 2017-03-06 17-13

Run is stopped if switched to a script tab / remember scrolling pos

If you:

  1. Run the scene
  2. Switch to a script tab
  3. Go back to the scene

It appears the scene was stopped, i.e. it's not running anymore.

Is this intentional? I would argue it's a bit inconvenient. At least for me right now, I find myself going back and forth between the two tabs (the scene and the script) and it would be nice if it the scene wasn't stopped so that I can look at it and go back to the code.

Video asset: autoplay + loop

Video asset: autoplay + loop

Description
  • Need control over autoplay and loop for video assets (as we have over audio assets)
  • I have a project with a video file, with audio, and the audio keeps playing ad nauseam
Version
  • 0.8.9.21
Platform
  • Windows

Support for Grid Snapping and Angle Snap

Description

NuNu Studio needs support for grid snapping and angle snap. This will make object placement in NuNu studio much more precise and easier on artists using the tool. Angle Snap should start at 5 degrees and be able to be tweaked by the artist. Grid Snapping should should be able to be adjusted by the artist to fit his or her needs depending on the task at hand.

Version
  • v0.8.9.22-alpha
Platform
  • Windows

Node-based effects pipelining/compositing UI

In 3D, animated, or multimedia projects, it is sometimes useful to perform a series of effects or create composite output from several inputs. To support this type of workflow, in an intuitive way, various multimedia applications provide node-based graphical interfaces.

Examples

Some examples of compositing or data-flow user interfaces include:

  • Blender3D node-based compositor - create data pipelines for visual effects, etc.
  • NATRON - node-based compositor, similar to Adobe After Effects
  • NodeRED - flow based programming environment

Related issues

Related to issue #26: Support for post processing effects
Possibly related to issue #27: Parameter graph editor UI

Cannot attach scripts to objects in Project Explorer

Cannot attach scripts to objects in Project Explorer

The Project Explorer does not allow attachment of scripts to objects via dragging. The only result is re-ordering of the items in the list. Copy and Paste works.
Version
  • 0.8.9.25
Platform
  • Web Version [X]

Remove the build/ folder from the repository

Git is mainly for source code, not built code. Every time you update that file you're adding megabytes of data to the history, none of which is needed. It's better to get this fixed early on than lock into it later.

Support for post-processing effects

Support for post-processing effects

Description
  • Support for threejs post-processing effects in nunuStudio
  • Post processing effects can be attached to camera objects
  • Camera Editor tab with test scene for previewing post processing effects for that camera,
  • Post processing effect objects stored in an array

Editor theming engine

This issues is to discuss what things should be themeable inside the editor and what is the better way to do it.

I was thinking to use CSS themes and attribute classes do every different type of UI element.

Another solution is to use JSON files that store some attributes of the UI elements,, it would be faster but not so versatile.

I will not work on this at least until i have a beta versions available. But since there are some issues already open regarding this i decided to create this one.

Support for SpriteSheet animations

SpriteSheet animations

Description
  • Implement spritesheet animations as Texture objects that can be used with normal materials and particles
Platform
  • Web Version [X]
  • Windows [X]
  • Linux [X]

Fix fullscreen resize on demo page

Fix fullscreen demo page size on mobile

Description
  • Resize on working on mobile for the demo webpage
Platform
  • Web Version [X]
  • Windows [X]
  • Linux [X]

Idle web-based nunuStudio causes high GPU load

Steps to reproduce the issue:

  1. start a local webserver (i use WebServer for Chrome)
  2. open nunuStudio/source/editor.html
  3. fire up TechPowerUp
  4. observe the high GPU load (here 70%)

2icgdurh

On my desktop PC it is not really an issue, but on my laptop it causes the fans to vigorously spin with the corresponding noise.

Maybe something can be done to reduce the idle load?

Hardware:

macOS package error

I've downloaded the release, extracted and attempted to open nunu.app but it throws

You can’t open the application “nunu” because it may be damaged or incomplete.

image

Potentially relevant issue nwutils/nw-builder#346

Support for pause in runtime

Support for pause in runtime

Description
  • Add support for pause in runtime.
  • When an application is paused the update and rendering should stop.
Platform
  • Web Version [X]
  • Windows [X]
  • Linux [X]

Update not immediate when changing attributes with mouse scroll

Hi

I am not sure whether this is a bug or a feature :)

Steps:

  1. add a basic shape (ex a plane)
  2. double click on it so that the object panel gets updated with its properties
  3. click inside the box of any property in the object panel, ex "Size W"
  4. use the scroll to change the value
  5. nothing happens in the Editor Area
  6. click outside the box => object gets updated

Support for scene 3D model export

Support for 3D model export

Description
  • Support for obj export using threejs OBJExporter / STLExporter
  • This features can be usefull for some 3D prototyping inside nunuStudio (specially using the web version)

Auto updates for desktop version

Automatic updates for desktop version

Description
  • Make desktoo version capable of updating its files using the ones on the web version
Platform
  • Web Version [X]
  • Windows [X]
  • Linux [X]

Mouse and Keyboard as objects

Change the Mouse and Keyboard to objects instead of global static classes, to allow multiple instances of nunu running on the same context.

Text misaligned on MS Edge

Text misaligned on MS Edge

Description
  • Dropdown menus text is centered on Microsoft Edge.
  • Working fine on Chrome and Firefox

MS Edge
edge

Chrome
chrome

Platform
  • Web Version [X]

Pure Nodejs based build system

As stated in the docs, the current build system requires windows and java, which I guess is for closure compiler?

Would you consider a pure Node.JS build pipe? This would lower the bar of entry and IMO makes sense since it's a JS project.

My use-case is that I would like to use the eidtor and runtime, but I need to make some changes to the core to integrate it with some other tech. The build requirements are unfortunatley blocking me from doing this as I do not have access to a windows machine.

I guess closure compiler could still be used to produce final builds, or as an optional step.

Resource Manager

Create a resource manager to manage and access resources!

Move all resource management from Program to this new class, and encapsulate methods currently present inside of Program.

Physics shape editor

Physiscs shape editor

Description
  • Shape editor for physics objects
  • Allow a physics object to have multiple shapes attached

CubeTexture.js lines 123

new CubeTexture(); error : this.images[i] = new Image(self.images[i]);

this.images[i] = new Image(self.images[i]);

Import multiple textures at once

It would be really helpful if we could import/upload multiple textures at once.

It's a bit of a chore importing textures one by one.

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.