Skip to content

Commit

Permalink
readme updates
Browse files Browse the repository at this point in the history
  • Loading branch information
inlife committed Aug 25, 2024
1 parent 0647f98 commit 3ec429f
Showing 1 changed file with 31 additions and 34 deletions.
65 changes: 31 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,13 @@

`nexrender` is a simple, small, carefully designed application with the main goal of rendering automation for Adobe After Effects based rendering workflows.

At this point in time, the project is mainly targeted at people at least somewhat comfortable with scripting or development,
and that have basic knowledge of `javascript` language and `json` formats.
The information in this document is targeted at people at least somewhat comfortable with scripting or development, and who have basic knowledge of javascript language and json formats.

If coding isn’t your thing or you want a quick managed solution, we got you! We offer a range of services to help you get started much faster and hassle-free.
* [Nexrender Cloud](https://www.nexrender.com/products/cloud) is a ready-to-use SaaS rendering platform created with ease in mind and supplemented with additional features.
* If you’re looking for something super flexible, tailored specifically to your unique needs, we also build [custom infrastructures](https://www.nexrender.com/products/custom) based on your requirements and integrated with your existing setup.
* In case, you just need to render something very quickly, let us know too! We offer [batch rendering](https://www.nexrender.com/products/batch) just for such cases.


### Features

Expand All @@ -148,7 +153,9 @@ and that have basic knowledge of `javascript` language and `json` formats.

### Alternatives

Among the alternatives, there is Plainly, a tool built on **Nexrender** infrastructure that offers cloud rendering. Another noteworthy option currently available is Dataclay's Templater bot edition.
The main alternative to our open-source project is [Nexrender Cloud](https://www.nexrender.com/products/cloud) - our hosted SaaS platform with easy setup, additional features and best price on the market.

Among more expensive alternatives, there is Plainly, a tool built on **Nexrender** infrastructure that offers cloud rendering. Another noteworthy option currently available is Dataclay's Templater bot edition.

# Installation

Expand All @@ -166,9 +173,6 @@ npm i -g @nexrender/cli @nexrender/action-copy @nexrender/action-encode ...

We will be using `nexrender-cli` binary for this example. It's recommended to download/install it if you haven't already.

Also, check out these example/tutorial videos made by our community:
* ["Creating automated music video with nexrender"](https://www.youtube.com/watch?v=E64dXZ_AReQ) by **[douglas prod.](https://www.youtube.com/channel/UCDFTT_oX6VwmANKMng0-NUA)**

>⚠ If using WSL check out [wsl support](#wsl)
## Job
Expand Down Expand Up @@ -208,7 +212,7 @@ Submitting this data to the binary will result in start of the rendering process
$ nexrender-cli '{"template":{"src":"file:///home/documents/myproject.aep","composition":"main"}}'
```

> Note: on MacOS you might need to change the permissions for downloaded file, so it would be considered as an executable.
> Note: on MacOS you might need to change the permissions for downloaded file, so it would be considered as an executable.
> You can do it by running: `$ chmod 755 nexrender-cli-macos`
or more conveniently using the `--file` option
Expand Down Expand Up @@ -306,7 +310,7 @@ The reason is that we haven't defined any actions that we need to do after we fi
```

We've just added a `postrender` action, that will occur right after we finished rendering.
A module that we described in this case, is responsible for copying result file from a temp folder to the `output` folder.
A module that we described in this case, is responsible for copying the result file from a temp folder to the `output` folder.

There are multiple built-in modules within nexrender ecosystem:

Expand All @@ -317,7 +321,7 @@ There are multiple built-in modules within nexrender ecosystem:
* [@nexrender/action-decompress](packages/nexrender-action-decompress)
* (list will be expanded)

Every module might have his own set of fields, however, `module` field is always there.
Every module might have its own set of fields, however, `module` field is always there.

Also, you might've noticed that `actions` is an object, however, we described only one (`postrender`) field in it.
And there are more:
Expand Down Expand Up @@ -436,6 +440,10 @@ Job can have state field (`job.state`) be set to one of those values:
* `finished` (when worker successfully finished rendering the job)
* `error` (when worker got an error at any step starting from `started` state)

If you want to monitor the status of all your running jobs, consider trying our SaaS solution, [Nexrender Cloud](https://www.nexrender.com/products/cloud), which offers enhanced visibility and a range of other cool features. Here is how it looks like:

![Nexrender Cloud Screenshot](https://github.com/user-attachments/assets/4daa7764-7e92-4cab-96a8-7c246c8fbb61)

## Programmatic

In case you are building your own application and just need to use a rendering part, or you wanna manually trigger jobs from your code,
Expand Down Expand Up @@ -607,6 +615,10 @@ This way you (if you are using network rendering) can not only deliver assets to
}
```

Companies often need to review render results on-the-go to avoid producing videos with misaligned images, fonts, or other errors. Our SaaS solution, [Nexrender Cloud](https://www.nexrender.com/products/cloud), offers this capability. Here's a glimpse of how it works:

![Nexrender Cloud Job Screenshot](https://github.com/user-attachments/assets/42d7345f-230e-40c4-97ae-55605cc81aaa)

### HTTP caching
When using the `http` or `https` protocol, you can utilize local caching to minimize the amount of data that have to be transferred over a network and speed up project/assets download. To use HTTP caching, the server serving your assets must support the relevant [HTTP caching semantics](https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching).

Expand Down Expand Up @@ -699,7 +711,7 @@ To do that, a special asset of type `data` can be used.
* `value`: mixed, optional, indicates which value you want to be set to a specified property
* `expression`: string, optional, allows you to specify an expression that can be executed every frame to calculate the value
* `composition`: string, composition where the layer is, useful for searching layer in specific compositions. If none is provided, it uses the wildcard composition "\*",
that will result in a wildcard composition matching, and will apply this data to every matching layer in every matching composition. If you want to search in a nested composition you can provide a path to that composition using `"->"` delimiter.
that will result in a wildcard composition matching, and will apply this data to every matching layer in every matching composition. If you want to search in a nested composition you can provide a path to that composition using `"->"` delimiter.
For example, `"FULL_HD->intro->logo comp"` matches a composition named `logo comp` that is used in composition `intro` which in turn is used in composition `FULL_HD`. Note, that `FULL_HD` doesn't have to be the root composition. Make sure to specify a **composition** name, not a layer name.
* `continueOnMissing`: boolean (default false), optional, allows you to bypass an error exception if couldn't find any layers. Probably should not be used by users, unless they know what are they doing.
Expand Down Expand Up @@ -788,11 +800,11 @@ With some basic knowledge of `ExtendScript Toolkit`, you can write custom script

### Dynamic Parameters

With dynamic parameters, you can set a parameter in your Job declaration to be used on a JSX Script!
With dynamic parameters, you can set a parameter in your Job declaration to be used on a JSX Script!

Each parameter object must have the following:
* **key** (required) : The key of the variable. Example: Key = dog => NX.dog.
* **value** (required) : The target value for the variable. Example: Key = dog, Value = "doggo" => NX.dog = "doggo". See [Supported Parameter Types](#supported-parameter-types).
* **value** (required) : The target value for the variable. Example: Key = dog, Value = "doggo" => NX.dog = "doggo". See [Supported Parameter Types](#supported-parameter-types).

### Supported Parameter Types

Expand Down Expand Up @@ -862,7 +874,7 @@ This is the default value for parameters used on any given JSX script that are n
}
]
```
`NX.get("carDetails")` will be equal to `null`.
`NX.get("carDetails")` will be equal to `null`.



Expand All @@ -871,11 +883,11 @@ This is the default value for parameters used on any given JSX script that are n
Functions are useful if you need some dynamic calculation of specific values. You can use them in conjuction with other dynamic parameters as well. Currently we support [Self-invoking Functions](#self-invoking-functions-example), [Named Functions](#named-functions-example) and [Anonymous Functions](#anonymous-functions-example). After Effects ExtendedScript **does not support arrow functions** at the moment (cc 2020).

##### Warnings
* You must **only use one function per parameter**; If there's more than one function defined in the parameter `value` the job will crash due to limitations in function detection and parsing.
* You must **only use one function per parameter**; If there's more than one function defined in the parameter `value` the job will crash due to limitations in function detection and parsing.
* Use well-formed functions and be aware of the computational weight of your functions. Malformed functions will cause the script to fail and subsequently the job to crash.

##### Self-Invoking Functions Example
Self-invoking functions are useful when concatenating strings, or in places where you want the function output without redeclaring it.
Self-invoking functions are useful when concatenating strings, or in places where you want the function output without redeclaring it.

```json
"parameters" : [
Expand All @@ -885,7 +897,7 @@ Self-invoking functions are useful when concatenating strings, or in places wher
}
]
```
The above function could be use in a string concatenation such as
The above function could be use in a string concatenation such as
```jsx
alert("Miss, what's the mathematical operation required to compute the number" + NX.get("onePlusOne") + " ?"); // A typical second grade question.
Expand Down Expand Up @@ -925,7 +937,7 @@ This convoluted function would return a lovely invitation string to an event usi
// Output:

/*
This years' Avengers Gala is on the prestigious Smithsonian Museum of Natural History located at 10th St. & Constitution Ave. Our special guests Steve, Natasha,Tony, Wanda, Thor, Peter and Clint (whoever that is) are going to be present for the ceremony!
This years' Avengers Gala is on the prestigious Smithsonian Museum of Natural History located at 10th St. & Constitution Ave. Our special guests Steve, Natasha,Tony, Wanda, Thor, Peter and Clint (whoever that is) are going to be present for the ceremony!
*/
```
Expand Down Expand Up @@ -1257,7 +1269,7 @@ If running WSL (`Windows Subsystem for Linux`) you will need to configure your p

### Linux Mapping

You will need to pass in which drive letter `Linux` is mapped to in `Windows`. This is the `Drive Letter` in which you can access your Linux file system from Windows.
You will need to pass in which drive letter `Linux` is mapped to in `Windows`. This is the `Drive Letter` in which you can access your Linux file system from Windows.

> ⚠ Note: Drive mapping is setup when configuring WSL
You can do this through the CLI like so assuming Linux is mapped to `Z`.
Expand Down Expand Up @@ -1343,7 +1355,7 @@ nexrender-cli -f mywsljob.json -b "/mnt/d/Program Files/Adobe/Adobe After Effect
### WSL Workpath
By default nexrender will use your Linux /tmp folder to render out the jobs.
By default nexrender will use your Linux /tmp folder to render out the jobs.
We suggest changing this to a secondary drive as rendering can eat up disk space causing an issue where `WSL` does no release disk space back to `Windows`.
Expand Down Expand Up @@ -1611,21 +1623,6 @@ If you've used nexrender, and you like it, please feel free to add yourself into
* [Stargazer](https://gostargazer.com/)
* you name goes here
## Plans
Features for next major release (`v2.0.0`):
1. Ability to switch renderers for a job (`none`, `aerender`, `media-encoder`)
2. Ability to push a job onto a server with ability to auto-split and render parts independently on the network
1. API for tracking/managing active workers in the network
2. Algo of splitting based on time & amount of workers
3. New job type (`partitioned`), which would be excluded from some general API responses
4. Mechanism of selecting a single node to be the "finisher", that would await and merge results of other jobs
5. Possible names: `@nexrender/action-merge-parent, @nexrender/action-merge-child`
3. Extend current scripting capabilities with an advanced real-time communication with the internal environment via TCP connection
4. Define a general abstract inteface for the actions, and a general package that would contain basic funcitonality like input/output arguments, etc.
5. Re-design networking layer, as well as server database layer, to count in cases where the jobs can be huge json objects.
6. Create automated footage detection and asset generator
## Contributors
### Code Contributors
Expand Down

0 comments on commit 3ec429f

Please sign in to comment.