Igrium's Replay Exporter

Igrium's Replay Exporter

Mod

An addon to the Replay Mod that allows it to export into Blender and other 3D software.

Client TechnologyUtility

4,729 downloads
158 followers
Created2 years ago
Updateda month ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.
Filter versions...

Beta 0.9.1

by Igrium on May 26, 2024
Download

1.20.4 Update

This patch is pretty straightforward -- a simple update to 1.20.4 MrNavaStar. I've also cleaned up some of the base build code.


Not much has changed in the main repo for this update because I've been focused on re-writing the world exporter in a separate repository.

Beta 0.9.0

by Igrium on Dec 8, 2023
Download

Bugfixes and Stability

There aren't many user-facing features in this update, but it contains numerous critical fixes and backend improvements. The most prominent is the major rewrite of some of the base model adapters, greatly improving entity renderer compatibility.

Changes

  • Update to 1.20.1

    Special shoutout to MrNavaStar for pulling the heavy lifting for this update! As with most Minecraft updates, there were a variety of underlying changes to address, and he did a superb job.

  • Base model adapters were improved, leading to much better compatibility with complex models.

    • Moved shared logic from AnimalModelAdapter and SinglePartModelAdapter into single parent class.

    • Fixed mathematical mistakes regarding the coordinate space of child model parts. As a result, many previously broken entities (such as horses) are now fixed.

    • Exporter now respects model part visibility.

    • Proper fix for y-offset issue.

    • Re-organized model adapter files in the repo.

  • Fixed a critical issue where block colors would appear black when imported into Blender 3.5+.

A Critical Bug

There is currently an issue in some versions of Blender where updated blocks will appear in the wrong place. As far as I can tell, this is an issue with Blender itself, and I'm still unable to determine how to fix it.

If this happens, simply save your file and re-open it. This is a problem with the render cache, therefore reloading the file is a reliable resolution.

Beta 0.8.0

by Igrium on Apr 20, 2023
Download

The Anti-Jank Update (Part 2)

This update builds on the groundwork released in 0.7.0 to make a better overall user experience. This includes a complete re-write of the export UI, and various quality of life improvements. The exporter is no-longer reliant on single "radius" and "lower depth" sliders. Instead, a new Bounds Editor allows the user to customize their export region with chunk-level precision.

Additionally, the replay export screen now saves the export settings to disk for re-use, just like the video export screen.

Changes

  • UI Overhaul
    • Re-wrote the export settings screen from scratch.
    • Added new Bounds Editor for easy export region selection.
    • Export screen is now an actual screen rather than a popup.
    • Export settings now get saved to file.
    • Re-organized all UI code.
  • Bug Fixes
    • Fixed crash when exporting replays containing shulkers.
    • Bullshit workaround for issue regarding player skin loading.
    • Fixed incorrect shield texture in export.
    • Fixed crash when previous replay export directory is no longer valid.
  • Misc
    • Updated world exporter to use bounding box rather than radius/lower depth internally.
    • Replaced (broken) fluid exporter with a prototype one that works with multithreading.
    • Made vcap exporter use section coordinates all the way through the export pipeline.
    • Living model adapters can now write custom material behavior.
    • Naming scheme for unknown bones in animal model adapter is now somewhat deterministic. It no longer calls Java's native toString method, which uses the object's internal location in memory.
    • Properly marked incompatibility with Sodium.

Beta 0.7.0

by Igrium on Feb 16, 2023
Download

The Anti-Jank Update (Part 1)

This update is quite ambitious, so I had to pull a Caves and Cliffs and split it into two. 0.7.0 lays the technical groundwork for 0.8.0, which will be focused on the UI and making a better user experience.

In this update, the world exporter has been almost completely re-written. If you've been following the GitHub repo, this is what's been happening in the async_world_capture branch.

The new exporter is written in a way such that it can be executed off of the main thread, with all block updates during the export being properly accounted for. This works using a proxy, "snapshot" object, which uses a client-side block update detector to create a thread-safe view of the world at a given time, without any overhead upon creation. This means that, along with some internal optimizations, the initial world exporter can now operate concurrently with the frame exporter to improve export times and make the UI more responsive.

Additionally, the export pipeline has been re-written as to not piggyback off of the Replay Mod's render pipeline. A custom pipeline that's built for the unique needs of the replay exporter rather than a video exporter significantly improves code cleanliness and paves the way for better UI clarity (some of which is already implemented.)

I also updated the mod to 1.19.3 because some people were asking for that.

Changes

  • Updated to 1.19.3

    • Removed Joml as a jar-in-jar dependency as that's now provided by Minecraft.

    • Updated model adapters to use Joml types where relevant.

  • Overhauled world exporter

    • Wrote ChunkView abstract class which represents a block view that declares which chunks are loaded.

    • All Vcap capture classes now use this ChunkView abstraction, allowing them to be used on things other than World instances.

    • Created WorldSnapshot class, a thread-safe view of a world at a specific point in time.

    • World exporter works asynchronously, exporting chunks in parallel to drastically improve export time.

  • Re-wrote replay export pipeline

    • Created new ReplayExporter, an adaption of VideoRenderer designed specifically for exporting replays.

    • Removed all the janky workarounds that were in use to get VideoRenderer to export replays.

    • Implemented backend for better UI feedback about export "phases." This replaces the prints to console that were in use before.

    • Fixed an issue where entities wouldn't export properly if the export region started at the very beginning of the replay.

    • Fixed an issue where player skins wouldn't export if the playhead was in the middle of the export region.

    • Moved replay finalization and serialization off of the main thread.

  • Small UI update

    • New export progress screen displays world export progress as well as replay export progress.

    • Added warning about the fluid exporter's memory issues to export screen.

  • Misc.

    • Made the Blender addon camera export start at frame zero, regardless of the starting frame.

Beta 0.6.3

by Igrium on Jan 28, 2023
Download
  • Fixed an issue where updates to the player's crouch state would not get exported.

  • Made the exporter encode the mod version into the replay metadata.

  • Added model adapter for arrow entities (model by TheDuckCow)

Beta 0.6.2

by Igrium on Jan 21, 2023
Download
  • Added a cache in the vcap context for fluid meshes. In practice, this means that the 1x1 lava pockets in the nether won't spam the file with thousands of identical meshes.

Beta 0.6.1

by Igrium on Jan 21, 2023
Download
  • Added model adapters for Wither Skeleton and Stray.
  • Bandaid fix on an issue where entities with single part models would appear 1.5 blocks too low.

Beta 0.6.0

by Igrium on Jan 18, 2023
Download

The Material Update

The primary focus of this update is to improve the world texture/material pipeline. This not only includes animated textures and better-looking materials by default, but a complete overhaul to the internal asset management system to make it more versatile overall.

Warning: This release updated the Vcap and Replay specifications. Older versions of the Blender addon may not be able to import files from newer versions of the mod!

Changes

  • Re-organized Vcap export context

    • Instead of being hard-coded to save world materials and textures, export context now contains a "material provider" system which can save an arbitrary amount of materials and textures.

    • The same goes for models. Model entries have been replaced by model providers (which BlockModelEntry is a subclass of) that supply their own mesh writing function.

  • Updated ReplayTexture

    • Replay textures may now specify "dependency" textures, which are written to disk alongside the primary texture.

      • Used for animated textures.
    • Added prepare() method to execute pre-serialization functions (such as GPU texture extraction) asynchronously.

    • Wrote TextureSerializer utility class that unifies the code of writing textures to Vcap and Replay zip files.

    • NativeImage extractor now uses a byte array rather than saving and reading from disk.

  • Added support for emission in the Unified Material System.

    • emission and emission_strength fields.
    • Emissive blocks are properly exported.
  • Exporter now supports animated textures

    • Unified Material System now includes a specification for animated textures.

    • Blocks with animated textures are given their own materials rather than using the atlas.

      • Detection and extraction of spritesheet.
    • Implemented spritesheet decoding in Blender

  • Fixed an issue in the Blender addon where materials in subdirectories of a Vcap would not be imported properly.

Beta 0.5.0

by Igrium on Dec 29, 2022
Download

Advanced Camera Animations

This update focuses less on what gets exported from Minecraft, and more on what gets imported into Minecraft. In particular, camera animations can now be exported from Blender and imported back into the game.

It's no secret that the exporter is not perfect. And while it's had major improvements as of late, there will always be edge-cases where it just fails, and rendering in-engine is the only option. Importing external camera animations into your replays provides the ability to use Blender's advanced animation toolset with Minecraft's native renderer, giving you the best of both worlds.

Usage

In Blender, select your animated camera and go to File > Export > Camera Animation (.xml). In the window that opens, choose your output file and click "Export Camera XML".

Note: If your camera has constraints, it might be a good idea to bake the action first. Exporting animations with constraints can lead to unexpected results.

Next, launch Minecraft and open your replay file. Open the Hotkey GUI using the hamburger button in the bottom left corner and select "Import Camera".

This will open the Camera Manager, where you will see a list of all animated cameras in the file. To import a new camera, click the large "Import Camera" button at the bottom. This will open a file browser, where you should select the xml file you exported from Blender. Once the camera is in your file, the game sees it as an entity. Just like in the Player Overview, click the name in the Camera Manager and add a spectator keyframe so your camera can be rendered.

It's important to note however, that although they present as entities, animated cameras are not entities. They are evaluated based on the replay timeline instead of the game timeline, so time keyframes have no effect on them. If the timing of a camera needs to be adjusted, it must be done in Blender.

Warning: Once an animated camera is used, your replay is no longer compatible with the vanilla Replay Mod. It will still open without this extension, but all your animated cameras will be gone.

Changes

  • Camera animation exporting in Blender.

    • Re-wrote the half-written exporter from the previous version.
  • Camera animation importing.

    • Wrote animated camera module to handle imported cameras.

    • Created TimelineUpdateEvent that's fired whenever the replay timeline is updated.

    • Added the relevant framework for custom camera path rendering.

    • Created Camera Manager and Camera Editor UI.

    • Wrote various jGUI utility classes used in the Camera Manager and Camera Editor.

  • Internal code changes.

    • Created RenderUtils and FutureUtils utility classes.

    • Fixed XMLUtils.

    • Created ReplayModHooks class.

      • onReplayModInit allows for mod initialization code that requires the Replay Mod to have been initialized already.
  • Vcap test commands are now disabled unless game is in a development environment.

Beta 0.4.0

by Igrium on Dec 1, 2022
Download

The Fluid Update (almost)

This update brings a long-requested feature: fluid support. Or, at least part of it. Mid-replay fluid updates are still not working and have been disabled. They also don't use animated textures yet.

To export fluids, simply ensure "Fluid Mode" is set to Static on the export screen.

Changes

  • Wrote fluid system.

    • Flood fill algorithm for generating fluid domains.

    • Mesh comparison algorithm to support fluid system.

  • Cleaned up block updating code.

  • Created mod icon.

  • Blender: Fixed an issue arising when a block was modified twice during a replay.


Project members

Igrium

Owner


Technical information

License
GPL-3.0-or-later
Client side
required
Server side
unsupported
Project ID