GithubHelp home page GithubHelp logo

picalines / outer-scout Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 1.18 MB

A cinematic toolbox for Outer Wilds & Blender

License: Other

C# 99.50% HTML 0.50%
http-server machinima mod openapi outer-wilds owml

outer-scout's Introduction

Outer Scout

A toolbox for creating and importing cinematic shots from Outer Wilds into Blender!

thumbnail

Basic usage example

  1. Open Blender and Outer Wilds at the same time
  2. Get to the desired location in Outer Wilds and click "create a scene" in the Outer Scout add-on menu
  3. The Blender add-on imports a planet model from Outer Wilds and sets it to the desired position
  4. Put the camera in Blender and animate it
  5. Click on the record button in the add-on menu!

After that, the footage recorded from the game is imported into your Blender project and installed as the background of the camera. This way you can embed any 3D Blender model into a scene from Outer Wilds!

Tip

See the addon's README for examples with screenshots and videos

Requirements

Download the zip archive of the add-on source code and install it in Blender.

FFmpeg is required for video recording functionality. The ffmpeg command must be available in the PATH (a specific path to the executable can be specified in the settings). On Windows I recommend installing ffmpeg via scoop

The add-on and the mod communicate over the HTTP protocol on local port 2209. You can change the port in the settings of two programs

How it works

This mod implements the API that can:

All API paths are available in the swagger-ui interface. You can view them by opening a web browser and navigating to localhost:2209.

A more in-depth API example

Let's do something like the dolly zoom effect. First we need to create an Outer Scout scene:

// POST /scene
{
    "hidePlayerModel": true,
    "origin": {
        "parent": "TimberHearth_Body",
        "position": [20.8809223, -41.51514, 186.207733],
        "rotation": [0.461064935, -0.4372242, -0.6413971, 0.429958254]
    }
}

Now we need a camera. The mod can create several cameras of different types, but we will only need one regular (perspective) camera:

// POST /objects
{
    "name": "mainCamera",
    "transform": {
        "parent": "scene.origin"
        // scene.origin is a special object,
        // located in the coordinates that we specified above
    },
}
// POST /objects/mainCamera/camera
{
    "type": "perspective",
    "gateFit": "horizontal",
    "resolution": {
        "width": 1920,
        "height": 1080
    },
    "perspective": {
        // See the Unity documentation on the physical properties of cameras
        // https://docs.unity3d.com/Manual/PhysicalCameras.html
        "focalLength": 20,
        "sensorSize": [36, 24],
        "lensShift": [0, 0],
        "nearClipPlane": 0.1,
        "farClipPlane": 5000
    }
}

Now we need to animate the camera position and focal length:

// PUT /objects/mainCamera/keyframes
{
    "properties": {
        "transform.position.z": {
            "keyframes": {
                "1": { "value": -2 },
                "60": { "value": 2 }
            }
        },
        "camera.perspective.focalLength": {
            "keyframes": {
                "1": { "value": 40 },
                "60": { "value": 10 }
            }
        }
    }
}

Then we need to specify which file on the disk to save the video to. To do this, we need to create a camera recorder:

// POST /objects/mainCamera/recorders
{
    "property": "camera.renderTexture.color",
    "outputPath": "D:\\assets\\color.mp4",
    "format": "mp4"
}

And finally, we can record the created scene:

// POST /scene/recording
{
    "startFrame": 1,
    "endFrame": 60,
    "frameRate": 60
}
color.mp4

outer-scout's People

Contributors

picalines avatar

Stargazers

FunkyShoe avatar

Watchers

 avatar

Forkers

bwc9876

outer-scout's Issues

Custom interpolations in /keyframes

In current version of the mod you can only specify the value for keyframes, but can't customize interpolation between them - linear interpolation will be used by default

Ideally, you should be able to configure interpolation in /keyframes using the Keyframe struct fields:

{
  "properties": {
    "transform.position.x": {
      "keyframes": {
        "1": {
          "value": 0,
          "inWeight": 0.333,
          "inTangent": 5
        },
      }
    }
  }
}

This issue exists as a marker of possible mod improvement

Major workflow refactor TODO

  • Merge BodyMeshExporter mod

General workflow should be:

  • Load ground body in Blender
  • Edit camera & hdri movement there, send it to Outer Wilds
  • Test movement in game
  • Render footage in game, save it near the Blender project
  • Render buttons should be in special panel in Blebder
  • Allow changing stuff in such project

...

PROFIT!!!

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.