lemaik / chunky Goto Github PK
View Code? Open in Web Editor NEWThis project forked from chunky-dev/chunky
Photorealistic image renderer for Minecraft 1.2.1+
Home Page: https://chunky.lemaik.de
License: GNU General Public License v3.0
This project forked from chunky-dev/chunky
Photorealistic image renderer for Minecraft 1.2.1+
Home Page: https://chunky.lemaik.de
License: GNU General Public License v3.0
>java --version
openjdk 15.0.1 2020-10-20
OpenJDK Runtime Environment (build 15.0.1+9-18)
OpenJDK 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)
openjfx-11.0.2_windows-x64_bin-sdk
java --module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --add-modules=javafx.controls,javafx.base,javafx.graphics,javafx.fxml -jar ChunkyLauncher.jar --launcher
Open my world
Select some Chunks (in this case a 2x2 block)
Switch to "Render Preview" tab
Click on the play button and wait for the progress bar to complete
An error is logged, and nothing is rendered:
Exception in thread "Scene Manager" java.lang.NullPointerException: Cannot invoke "se.llbit.chunky.world.WorldTexture.store(java.io.DataOutputStream)" because "waterColors" is null
at se.llbit.chunky.resources.OctreeFileFormat.store(OctreeFileFormat.java:129)
at se.llbit.chunky.renderer.scene.Scene.saveOctree(Scene.java:1884)
at se.llbit.chunky.renderer.scene.Scene.saveScene(Scene.java:472)
at se.llbit.chunky.renderer.scene.SynchronousSceneManager.saveScene(SynchronousSceneManager.java:130)
at se.llbit.chunky.renderer.scene.AsynchronousSceneManager.lambda$saveScene$1(AsynchronousSceneManager.java:122)
at se.llbit.chunky.renderer.scene.AsynchronousSceneManager.run(AsynchronousSceneManager.java:81)
GPU rendering would significantly improve the render times. Could be made possible with OpenCL or Vulkan Compute
Using the "Select camera-visible chunks function" used to mark all chunks visible to the camera, but the function doesn't appear to be working right now.
I found that some json textures and models do not load properly with the texture pack linked bellow. The corresponding blocks are then replaced with invisible ones in the scene. Also note colors in the Map view are wierdly rendered (grass for instance).
The pack : http://www.amberstonedream.com/en/pack1.php
I tried HQ versions : 1.14, 1.15 and 1.16
Examples of unrendered blocks (you'll need worldedit to place some of them) :
99:15 = mushroom_stem (probably based on block orientation)
99:1 = brown_mushroom_block
birch_fence_gate
probably a lot more...
When changing the pitch of a player's head, it is not rotated around the neck but around the head center instead.
An unknown Item ID popup locks the Chunky interface until the Warning is acknowledged.
Loading Chunks on some maps can prompt you with multiple unknown Item ID popups whereby only one of these windows can be "active" at once (on Windows)- Meaning you have to select and acknowledge each one which takes time. If a player has an unknown item ID equipped, like a Elytra, an unknown Item ID popup will always occur on that map.
Could we compress multiple unknown Item ID warnings into a single window and/or have these warnings not lock up the UI given the nature.
I believe the approach by other software in this regard is better. Here is an example from UE4 whereby you can just ignore the message log window and still interact with the UI.
CubicChunks is a mod that allows for almost unlimited world height and depth.
Some very unique scenarios can be achieved through this, such as what terra121 mod is showcasing: a minecraft world that's a 1 to 1 scale of the real world (1 block = 1 meter). It features terrain, biomes, trees, and roads and is based on data provided by public online datasets.
It's extremely cool and I think that chunky would really give this world a unique perspective. I'd love to be able to make a real life landscape photo and then go to minecraft "Terra" world to the respective area, load enough part of that world and then open it in chunky to make a render of that same landscape.
As of now, I tried to open the world but chunky seems to see only empty regions (pic related):
Minecraft version: 1.12.2 with forge 1.12.2-14.23.5.2838
Mods used:
CubicChunks version 1.12.2-0.1042.0-SNAPAHOT
CubicGen version 1.12.2-0.0.115.0-SNAPSHOT
Let's Encrypt Craft
MalisisCore version 1.12.2-6.5.1-SNAPSHOT
Terra 1 - 1 version 0.1
(I only used the mods required/recommended for the terra121 mod to work)
I don't know how much work is getting world data from the 3d cubicChunks way instead of the vanilla way, but it would be really nice if this could be looked up.
When rendering an image displaying Redstone dust going up a block, the dust on the side of said block is invisible
Following discussions on Discord regarding coloured shadows created by Stained Glass two issues with how Stained Glass is being rendered have been noted. This is following off of upstream issue chunky-dev#450
Behaviour in 1.X is seen to be incorrect as all occluded surfaces are not rendered which is not the behaviour seen in Minecraft; where only adjacent Glass with the same Namespace ID's are.
Chunky 2.0 - Glass behaviour was adjusted to be much closer to Minecraft however it is not perfect.
[ ] Internal surface between two adjacent & different glass blocks have an increased brightness compared to Minecraft.
[ ] Internal surface shows incorrect culling of occluded adjacent surfaces of glass with different Namespace IDs
When chunky is done rendering one sample, it will spike in CPU usage (I assume as it updates the render preview and other things).
stone_slab
& smooth_stone_slab
- using same textures
smooth_red_sandstone_slab
- Red x's on all faces
smooth_sandstone_slab
- Red x's on sides
Tested with 1.14.4.jar loaded.
Resource Pack 123MB >~ 26GB of RAM
Settings loaded from D:\Programs\Chunky_293\chunky.json
Could not find image: textures/soul_fire.png
Could not find image: textures/soul_fire.png
Loading 716 textures from C:\Users\jackj\AppData\Roaming\.minecraft\versions\1.14.4\1.14.4.jar
Found Minecraft directory C:\Users\jackj\AppData\Roaming\.minecraft
Found latest Minecraft version: C:\Users\jackj\AppData\Roaming\.minecraft\versions\1.16.1\1.16.1.jar
Loading 88 textures from C:\Users\jackj\AppData\Roaming\.minecraft\versions\1.16.1\1.16.1.jar
Failed to load textures:
paintings_zetterstrand
Loading plugin: "chunky-denoiser-chunky2.jar"
The plugin DenoiserPlugin was developed for Chunky 2.0-beta6 but this is Chunky 1.4.5 - it may not work properly.
Plugin loaded: DenoiserPlugin 0.3.0
Building new octree (PACKED)
Building new octree (PACKED)
Building new octree (PACKED)
Building new octree (PACKED)
Settings loaded from D:\Programs\Chunky_293\chunky-launcher.json
Saved settings to D:\Programs\Chunky_293\chunky.json
Loading 716 textures from C:\Users\jackj\AppData\Roaming\.minecraft\versions\1.14.4\1.14.4.jar
Loading 88 textures from C:\Users\jackj\AppData\Roaming\.minecraft\versions\1.16.1\1.16.1.jar
Failed to load textures:
paintings_zetterstrand
Saved settings to D:\Programs\Chunky_293\chunky.json
Loading 716 textures from C:\Users\jackj\AppData\Roaming\.minecraft\resourcepacks\TRS Textures - V.2.3.0.zip
Texture format error: ASCII font texture must be 128 by 128 pixels
Loading 176 textures from C:\Users\jackj\AppData\Roaming\.minecraft\versions\1.14.4\1.14.4.jar
Loading 78 textures from C:\Users\jackj\AppData\Roaming\.minecraft\versions\1.16.1\1.16.1.jar
Saved settings to D:\Programs\Chunky_293\chunky.json
Could not load block repeater from C:\Users\jackj\AppData\Roaming\.minecraft\resourcepacks\TRS Textures - V.2.3.0.zip/
java.lang.RuntimeException: Could not load block model truckTire from [assets, minecraft, models, truckTire.json]
at se.llbit.chunky.block.ResourcepackBlockProvider$JsonModelLoader.getModel(ResourcepackBlockProvider.java:436)
at se.llbit.chunky.block.ResourcepackBlockProvider$JsonModelLoader.loadBlockModel(ResourcepackBlockProvider.java:449)
at se.llbit.chunky.block.ResourcepackBlockProvider.lambda$null$6(ResourcepackBlockProvider.java:106)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.util.Iterator.forEachRemaining(Unknown Source)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.forEach(Unknown Source)
at se.llbit.chunky.block.ResourcepackBlockProvider.lambda$loadBlocks$7(ResourcepackBlockProvider.java:77)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.util.Iterator.forEachRemaining(Unknown Source)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.forEach(Unknown Source)
at se.llbit.chunky.block.ResourcepackBlockProvider.loadBlocks(ResourcepackBlockProvider.java:71)
at se.llbit.chunky.resources.TexturePackLoader.lambda$loadTexturePacks$1(TexturePackLoader.java:3670)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.util.LinkedList$LLSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.forEach(Unknown Source)
at se.llbit.chunky.resources.TexturePackLoader.loadTexturePacks(TexturePackLoader.java:3665)
at se.llbit.chunky.ui.ResourceLoadOrderEditor.lambda$new$0(ResourceLoadOrderEditor.java:59)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Node.fireEvent(Node.java:8411)
at javafx.scene.control.Button.fire(Button.java:185)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:394)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:432)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:410)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:431)
at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
at com.sun.glass.ui.View.notifyMouse(View.java:937)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$4(WinApplication.java:186)
at java.lang.Thread.run(Unknown Source)
Caused by: java.nio.file.NoSuchFileException: File not found: [Ljava.lang.String;@29d728d0
at se.llbit.chunky.block.ResourcepackBlockProvider$MultiFileSystem.getInputStream(ResourcepackBlockProvider.java:1007)
at se.llbit.chunky.block.ResourcepackBlockProvider$JsonModelLoader.getModel(ResourcepackBlockProvider.java:432)
... 85 more
Could not load texture block/Tripwire
Credits to Luka#4234
labPBR provides a standardised PBR format which is primarily used to end fragmentation for shader and resource packs. At the time of writing there 13 Shaders and 4 Packs which support the labPBR specification and have been approved.
Normalmaps (with the _n suffix):
Red - n/a
Green - n/a
Blue - Material Ambient Occlusion
Alpha - Heightmap (POM)
Specularmaps (with the _s suffix):
Red - "perceptual" smoothness (related to linear roughness)
Green - F0 / reflectance : Store linearly 0 to 229 (90%). 230 to 255 represent various different metals. For a value of 255 the albedo should be used.
Blue - On dielectrics store porosity for 0 to 64, and 65 to 225 for subsurface-scattering.
(On metals is reserved)
Alpha - Emissiveness
Not only would this mean that we have access to a number of premade PBR resource packs, but we would be able to cross check implementations in Chunky against a multitude of Shaderpacks. Use of a standardised PBR implementation is beneficial over a custom implementation as it reduces fragmentation and improves cross compatibility.
Right now a player skin can be selected from the drive. Would be great to have an option to automatically fetch it, like with player heads
Every time I try to save a scene, I get a warning saying "Can't save the scene right now."
There's also an error that appears in the console the first time I save a scene that says,
Exception in thread "Scene Manager" java.lang.NullPointerException
at se.llbit.chunky.resources.OctreeFileFormat.store(OctreeFileFormat.java:129)
at se.llbit.chunky.renderer.scene.Scene.saveOctree(Scene.java:1884)
at se.llbit.chunky.renderer.scene.Scene.saveScene(Scene.java:472)
at se.llbit.chunky.renderer.scene.SynchronousSceneManager.saveScene(SynchronousSceneManager.java:130)
at se.llbit.chunky.renderer.scene.AsynchronousSceneManager.lambda$saveScene$1(AsynchronousSceneManager.java:122)
at se.llbit.chunky.renderer.scene.AsynchronousSceneManager.run(AsynchronousSceneManager.java:81)
I can get Chunky running on MacOS, but a simple font bug causes everything to be illegible. An awful lot seems to be working right. But since I can't read and understand the errors, there might be some silly little thing like typing the wrong directory or something else easy to fix. I simply can't read anything. Here's the details:
brew
java --module-path /Users/pacohope/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls,javafx.fxml -jar ChunkyLauncher.jar
. I was able to use --update
to do the updates.When the UI launches, I get a java error in my console, and a window (a couple screenshots are attached).
2021-02-21 22:09:16.384 java[62426:3491301] CoreText note: Client requested name ".SFNS-Regular", it will get Times-Roman rather than the intended font. All system UI font access should be through proper APIs such as CTFontCreateUIFontForLanguage() or +[NSFont systemFontOfSize:].
2021-02-21 22:09:16.384 java[62426:3491301] CoreText note: Set a breakpoint on CTFontLogSystemFontNameRequest to debug.
2021-02-21 22:09:16.393 java[62426:3491301] CoreText note: Client requested name ".SFNS-Regular", it will get Times-Roman rather than the intended font. All system UI font access should be through proper APIs such as CTFontCreateUIFontForLanguage() or +[NSFont systemFontOfSize:].
2021-02-21 22:09:16.680 java[62426:3491331] CoreText note: Client requested name ".SFNS-Regular", it will get Times-Roman rather than the intended font. All system UI font access should be through proper APIs such as CTFontCreateUIFontForLanguage() or +[NSFont systemFontOfSize:].
Unchecked exception caused Chunky to close.
I was able to later launch Chunky itself, using a command line cobbled together from Chunky's launcher and the stuff for openjfx:
/usr/local/Cellar/openjdk/15.0.1/libexec/openjdk.jdk/Contents/Home/bin/java --module-path /Users/pacohope/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls,javafx.fxml -Xmx1024m -Dchunky.home=/Users/pacohope/.chunky -classpath /Users/pacohope/.chunky/lib/chunky-core-2.3.0.jar:/Users/pacohope/.chunky/lib/commons-math3-3.2.jar se.llbit.chunky.main.Chunky
I got a window with a bunch of broken text, but otherwise functional. I clicked the highlighted "OK" button and i got a scrolling yellow progress bar across the bottom of the window. It sure seemed to be doing something. Ultimately, the render window remained blank.
Any chance to get an update that somehow chooses fonts better?
Chunky will not load Actors/Entities even if they exist in the scene .json.
Steps:
Versions tested:
1.4.5
, 1.4.6beta2
, 2.0beta6
, LeMaik-197
Render worker 6 crashed with uncaught exception.
java.lang.NullPointerException
at se.llbit.chunky.block.ResourcepackBlockProvider$JsonModelFace.getColor(ResourcepackBlockProvider.java:613)
at se.llbit.chunky.block.ResourcepackBlockProvider$JsonModelElement.intersect(ResourcepackBlockProvider.java:731)
at se.llbit.chunky.block.ResourcepackBlockProvider$JsonModel.intersect(ResourcepackBlockProvider.java:805)
at se.llbit.math.Octree.enterBlock(Octree.java:488)
at se.llbit.chunky.renderer.scene.Scene.worldIntersection(Scene.java:638)
at se.llbit.chunky.renderer.scene.Scene.intersect(Scene.java:614)
at se.llbit.chunky.renderer.scene.PreviewRayTracer.nextIntersection(PreviewRayTracer.java:98)
at se.llbit.chunky.renderer.scene.PreviewRayTracer.trace(PreviewRayTracer.java:44)
at se.llbit.chunky.renderer.scene.Scene.rayTrace(Scene.java:594)
at se.llbit.chunky.renderer.RenderWorker.work(RenderWorker.java:185)
at se.llbit.chunky.renderer.RenderWorker.run(RenderWorker.java:73)
Unsure what block caused the issue at this time. Will look into it shortly.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.