Git Product home page Git Product logo

chunky's Introduction

Chunky logo

Chunky

Chunky is a Minecraft rendering tool that uses Path Tracing to create realistic images of your Minecraft worlds.

Discord server · Documentation · Troubleshooting · Subreddit

Quick start guide

Prerequisites: Chunky requires Java 17. It is recommended to have the 64-bit version if you have a 64-bit operating system (you most likely do). If you haven't installed Java, you can download it from here, selecting Temurin 17 LTS. You also need (Open) JavaFX 17 LTS, which you can download from here and extract it; We cover valid extraction locations and manually adding the JavaFX module under the Troubleshooting article.

  1. Download the Chunky Launcher and open it
  2. Install the latest version of Chunky by clicking on Check for Updates
  3. Click on Launch Chunky start rendering your beautiful buildings

For guides and more information please checkout the Documentation. If you have any questions, please don't hesitate to reach out via Reddit, Discord, or GitHub.

Frequently Asked Questions

Why is there noise/grain/random bright dots in the render?

This is not a bug, but an unfortunate effect of the rendering algorithm used in Chunky. Torches and other small light sources cause a very random illumination and it takes a long time to render such light nicely.

You can disable emitters under the Lighting tab in the Render Controls dialog to remove most of the random bright dots. Note that rendering for a longer time will eventually remove the noise, though it may take a very long time.

Another way of removing the noise is using the Denoiser Plugin. While this can yield good results in most cases, it may distort the image in some cases.

How long does it take to render an image?

This depends on your CPU, the size of the image and the lighting conditions of the scene you are rendering. You can use the tips from the previous answer to get away with shorter render times.

Why do I see blue question marks or red crosses instead of blocks?

Chunky renders blue question marks for unsupported blocks. Maybe your Chunky version is outdated or the block is not yet supported. If the latter is the case, please file a bug report.

Red crosses are caused by missing textures. Please ensure that you're using a texturepack for the Minecraft version for the world you are rendering.

Which Minecraft versions are supported?

Chunky 2.4.4 supports Minecraft 1.2-1.19.2 worlds and Cubic Chunks for Minecraft 1.10-1.12 worlds.

We typically add new blocks shortly after a new Minecraft snapshot is released. Use the latest Chunky snapshot to render them until a new Chunky version is released.

Is GPU rendering supported?

There is a work-in-progress OpenCL plugin for Chunky. If you'd like to help with this, PRs are welcome!

Why are mobs not rendered?

Chunky currently can't render all entities. Future support for rendering more entities is planned, so stay tuned!

Can Chunky render mod blocks?

No. Due to the vast number of mods, this is not feasible at the moment. However support for JSON-defined block models is being worked on.

Where can I find good skymaps?

The skymaps page has some good links. Another good place is the #skymaps channel on our Discord server.

Chunky keeps freezing or crashing

Chunky uses a lot of memory. If Chunky has too little memory to work with it may slow down to a crawl or crash. The memory limit can be increased in the Chunky Launcher.

Rendering using the command line (Headless Mode)

It is possible to render a scene from the command line. First set up a scene using the GUI. Don't forget to save the scene. Then run the following on the command line:

java -jar chunky.jar -render SceneName

Where SceneName is the name of the scene to render. You can read more about headless rendering here.

Shutdown when render completes on Unix-like Systems (Mac OS X, Linux, BSD)

In the Advanced tab of the Render Controls window, you can check the checkbox that says "Shutdown when render completes" to shut down your computer when the set SPP target is reached. (This can be toggled while rendering.)

On Unix-like systems, the shutdown terminal command has to be run as root using sudo. For various reasons, Chunky cannot prompt for the password to sudo, so you must configure your system to allow the command to run without a password.

Open a terminal (such as bash) and run sudo visudo, providing your password.

Add the following line at the end of the file: (press Insert to type)

%user_name ALL=(ALL) NOPASSWD: /sbin/shutdown

Replace user_name with your username.

Press Escape, then type :wq.

You may need to restart or log out and in for this to take effect.

This will only allow sudo shutdown to run without a password; no other commands run with sudo will be affected.

What about the Chunky SpigotMC plugin?

The Chunky SpigotMC plugin is an unfortunate name collision and is unrelated to this project. Chunky (SpigotMC plugin) is a handy plugin to quickly pre-generate server chunks should you need that functionality. You can also find Chunky (SpigotMC Plugin) on GitHub.

More information about Chunky, including a short getting started guide and rendering tips are available at the Chunky Documentation page. For more insights into Chunky's development, keep an eye on the Discord; messages from contributors can sometimes give you insight into what everyone is working on.

Hacking on Chunky

It is recommended to use IntelliJ. Install the Java17 JDK (Temurin is the recomended distribution). Then, clone the Chunky repository and let IntelliJ index the project. Navigate to chunky/src/java/se/llbit/chunky/main/Chunky.java and click on the green play button next to public class Chunky { to build and run Chunky.

To build Chunky externally, run the gradlew script in the project root directory. Gradle is setup with a few main tasks:

  • build - Build Chunky, documentation, and run tests.
  • release - Build and save files ready for a release to a Chunky update site. Outputs to build/release
  • buildReleaseJar - Build an installer JAR. Outputs to build/installer
  • docs - Build the documentation. Outputs to build/docs
  • install - Create a publishable maven repository for Chunky core. Outputs to build/maven
  • clean - Cleans the project. Removes old builds.

A custom version can be specified with -PnewVersion="<version>". A custom prerelease tag can be specified with -PprereleaseTag="<tag>". The default version is in the format: {major}.{minor}.{patch}-{tag (DEV)}.{commits since last tag}.g{git hash of commit}

Chunky is split into four subprojects:

  • chunky - the core rendering and GUI project
  • lib - common code required by the other projects
  • launcher - the launcher
  • releasetools - tool used for packaging releases

If you want to hack on Chunky itself you will need to load the chunky and lib directories in your favorite editor. If available, use a Gradle project import option.

Code Style

The Google Java style guide should be followed for new code (2 spaces for indentation, no tabs). If you want to contribute code to Chunky please make your code look similar to the rest of the code, and refer to the style guide when in doubt.

Copyright & License

Chunky is Copyright (c) 2010-2023, Jesper Öqvist [email protected] and Chunky Contributors.

Permission to modify and redistribute is granted under the terms of the GPLv3 license. See the file LICENSE for the full license.

Chunky uses the following 3rd party libraries:

  • Apache Commons Math library by the Apache Software Foundation
    The library is covered by the Apache License, version 2.0. See the file licenses/Apache-2.0.txt for the full license text. See the file licenses/commons-math.txt for the copyright notices.
  • FastUtil by Sebastiano Vigna
    FastUtil is covered by Apache License, version 2.0. See the file licenses/Apache-2.0.txt for the full license text. See the file licenses/fast-util.txt for the copyright notice.
  • Gson by Google
    The library is covered by the Apache License, version 2.0. See the file licenses/Apache-2.0.txt for the full license text. See the file licenses/gson.txt for the copyright notice.
  • Simplex noise implementation by Stefan Gustavson and Keijiro Takahashi
    Released in the public domain.
  • lz4-java by Adrien Grand and the lz4-java contributors
    The library is covered by Apache License, version 2.0. See the file licenses/Apache-2.0.txt for the full license text. See the file licenses/lz4-java.txt for the copyright notice. lz4-java uses LZ4, by Yann Collet, which is covered by the BSD 2-Clause license. See the file licenses/lz4.txt for the copyright notice and full license.
  • Semver4j by Vincent Durmont The library is covered by the MIT License. See the file licenses/semver4j.txt for the copyright notice.

Special Thanks

YourKit
YourKit supports open source projects with innovative and intelligent tools for monitoring and profiling Java and .NET applications. YourKit is the creator of Java Profiler, .NET Profiler, and YouMonitor.


JetBrains supports core contributors of non-commercial open source projects by providing them with professional coding tools free of charge. Find out more.

chunky's People

Contributors

abonander avatar aenterprise avatar almrausch avatar animalcharade avatar atom3333 avatar booleanbyte avatar consueterra avatar doelia avatar electron93 avatar iceselkie avatar jackjt8 avatar joejenniges avatar justintimecuber avatar jyoo980 avatar lemaik avatar llbit avatar loicvdb avatar matthew55 avatar njdaeger avatar notstirred avatar peregrine05 avatar potatopresident avatar shirleynekodev avatar spongecade avatar stenodyon avatar thatredox avatar therealjayjayli avatar thisisbrady avatar togos avatar twirrim 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  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

chunky's Issues

Cannot open world from read only path

The RegionFile class always tries to open the region files in rw mode, which should not be required for a map renderer. This prevents you from opening a map on a read only network share, for example.

Selectable postprocessor

The finalizePixel method should be able to switch postprocessor based on an option in the Render Controls dialog.

Option to select texture pack missing - 1.1.3 (Mac)

Hi

I'm new to Chunky, so please forgive me if this has been covered elsewhere.

I've just downloaded 1.1.3 (Mac Bundle version) and I can't find the option tab where I can select texture pack. The Wiki says "You can load a custom texture pack by clicking the Options tab in the main window" - but I can't find that tab anywhere...

http://chunky.llbit.se/index.php?title=Getting_Started#Loading_a_Texture_Pack

The reason I want to load a texture pack is because I'm seeing black boxes with a red 'x' in the middle where I should be seeing cracked stone blocks.

Any help would be much appreciated :)

Material editor

The user should be able to edit the material properties of all blocks.

Issue with preview window

Chunky works completely, except that the preview window shows nothing but white. Saving the current frame still works though, as well as moving my camera around inside the preview window (confirmed with the save current frame.) What can I do do fix this? I can't set up a shot blind like this.

Automatic chunk loading

How hard do you think it would it be to have Chunky automatically load chunks during tracing? I'm thinking this could be done with a first pass that figures out which chunks rays would enter, then loads only those chunks, after which Chunky would proceed to do the full render. You'd probably want limits set, like no loading chunks that would appear <10 pixels wide, or not loading chunks hit after a ray has already bounced twice, in order to avoid loading up the whole world when someone points the camera too high. There could also be a hard limit of N chunks, which would be prioritized by closeness to the camera. (I have ideas for how this could be done pretty simply and efficiently, but I don't know how easy it would be to work in to Chunky's current architecture.)

hide/show preview vs render time

Hi :-) I was just wondering if the hiding the preview window decreases the total render time?

I guess it would because the window doesn't need to be updated ... but I thought I'd ask anyway.

Programmatic scene set-up

I'd like to be able to select a world, select chunks to be rendered, and initialize render settings, and render an image either via command-line options or via some simple scripting language and without every opening the UI.

I started attempting to make this work but all the rendering methods are so closely tied to the UI that I didn't manage to get it to render an image and write it to disk. I figured I should at least ask you how feasible this would be before going and making a lot of changes that you might not want to merge back to the master branch.

(In case you're wondering, the use case for this, and also the reason I added the parallel projection, is to use Chunky to generate tiles for an overhead map.)

UI Refactoring

Use reflection maybe to modify scene parameters?

Factory class to build UI elements for render controls?

Seamless slabs

Update slab rendering for the upcoming seamless slabs.

SSP and SPS

totheend-1000

I see SPP target on the bottom of the render controls as well as SPP and SPS with numbers next to them. Forgive me for my lack of knowledge about this but what do these mean and do? What should I set it to? A lot of my renders end up very grainy so do these have to do with it?

Exception in thread "Chunk Parser"

I receive the following error when navigating to the following by typing the coordinates and hitting enter.

Exception in thread "Chunk Parser" java.lang.ArrayIndexOutOfBoundsException: 23
at se.llbit.chunky.world.Biomes.getColor(Unknown Source)
at se.llbit.chunky.world.Layer.loadBiomes(Unknown Source)
at se.llbit.chunky.world.Chunk.parse(Unknown Source)
at se.llbit.chunky.world.ChunkParser.run(Unknown Source)

The coordinates are 1948, -4390
Which would be r.3.-9.mcr which I have checked and does exist.

Interesting to note that without the negative (ie 1948, 4390) it can navigate to and load the chunks correctly.

Improved biome rendering

Biome colors should be blurred over a small area so that the edges between biomes are not so sharp.

Lily pads not rotated

All lily pads face the same direction, regardless of their in-game direction.

Lily pads should face the same direction as in-game.

Cloud rendering

Minecraft-style clouds should be added as an optional feature.

Render entities

It would be great if entities could be rendered.

Entity support would enable rendering these things:

  • Mobs
  • Animals
  • Paintings
  • Signs with proper text
  • The book hovering over enchanting tables
  • The book on lecterns
  • Ender crystals
  • Particles
  • Beacon beam effect
  • Head blocks

Static objects are a priority due to higher benefit/effort ratio. Mobs would need a posing interface. Initially poses could be coded in scene settings, and some presets can be a simple in-between measure.

Batch mode

The user should be able to select a number of scenes to be rendered to a preset sample density, then render those as a batch operation.

Suggested by Evenios on Minecraft Forums.

Flower pot rendering

Flower pots should render just like in-game. Currently flower pots are not implemented.

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.