Commit Graph

30 Commits

Author SHA1 Message Date
CrushedPixel
8bd051eb27 Add metadata injection for 360 degree videos (mp4 format only)
Add com.googlecode.mp4parser:isoparser Library to build.gradle
Create inject360Metadata boolean setting in RenderOptions and added respective checkbox to GuiRenderSettings
Create MetadataInjector to inject 360 Degree Spherical Metadata into mp4 videos
2015-09-21 11:59:46 +02:00
CrushedPixel
3bc436c1f6 Remove own interpolators in VideoRenderer and use the KeyframeList's interpolators instead, thus supporting the new Spectator Keyframes 2015-09-10 19:31:08 +02:00
CrushedPixel
2f522c68fe Instead of using AdvancedPosition objects with a value for spectatedEntityID, use SpectatorData objects for Spectator Keyframes. This allows us to add more options to Spectator Keyframes. 2015-09-04 17:38:10 +02:00
johni0702
d687748629 The camera entity is now thePlayer 2015-08-19 12:22:55 +02:00
johni0702
7e91cb82a6 Fix resizing in render progress gui being at totally the wrong position causing the rendered video to be swapped to screen 2015-08-10 14:41:56 +02:00
CrushedPixel
34fe741cc4 Call Minecraft#updateDisplay in VideoRenderer if not in High Performance Mode, to resize the GuiVideoRenderer if user resized screen (requested by many users)
This has no side effects on the rendered video.
Change GuiVideoRenderer#initGui method to allow for resizing
2015-07-30 12:59:54 +02:00
CrushedPixel
13481416b7 Fixed a major bug in the Time Keyframe interpolation when rendering a video that caused the Replay to be restarted while rendering. This occurred whenever videoTime exactly matched a Time Keyframe's Position and was fixed by passing true to KeyframeList#getPreviousKeyframe and KeyframeList#getNextKeyframe, which therefore return the Keyframe itself if the timestamp matches. 2015-07-23 13:13:36 +02:00
CrushedPixel
f5a9723646 Added getLinearInterpolator() and getCubicInterpolator() methods to KeyframeValue interface to allow for specific Interpolators instead of the Generic Interpolators
Created InterpolationUtils class with a method to fix the Euler Rotation Break problem
Create AdvancedPositionSplineInterpolation and AdvancedPositionLinearInterpolation which always use the shortest possible paths between the Euler Rotation values of the Camera's Yaw and Roll
Remove Position Keyframe filtering when adding the Keyframe. This is now done by the AdvancedPositionInterpolation classes
2015-07-21 03:49:20 +02:00
johni0702
6422558028 General warning cleanup 2015-07-19 16:21:56 +02:00
johni0702
84cb8b2988 Do not bother with exceptions during exporting when process was cancelled 2015-07-16 19:09:30 +02:00
johni0702
56efc8c5ec Use RGB instead of ARGB for export and therefore speed up OpenGL to output conversion process 2015-07-16 18:14:14 +02:00
johni0702
787942aef2 Add high performance rendering mode which does not render the GUI every frame 2015-07-16 16:23:30 +02:00
johni0702
7fd429e25f Rework rendering pipeline to make better use of multithreading
Move OpenGL frame to ARGB conversion to processing threads
Move video exporting to processing threads
Skip creation of BufferedImage and instead use ByteBuffer with ARGB content directly
2015-07-15 14:23:43 +02:00
CrushedPixel
d057553223 Added "inclusive" parameter to getPreviousKeyframe() and getNextKeyframe() in KeyframeList to define whether the next/previous keyframe may have the same timestamp as the realTime parameter
Fixed a bug in KeyframeList#getPositionOnPath where a non-inclusive getPreviousKeyframe call resulted in an incorrect position value
2015-07-14 13:48:48 +02:00
johni0702
81c4659b93 Fix time freezes during rendering not working 2015-07-13 12:49:25 +02:00
CrushedPixel
06686d20a6 Added static reference to current VideoRenderer instance to allow CustomObjectRenderer to correctly interpolate Object Transformations while rendering 2015-07-12 18:59:19 +02:00
CrushedPixel
ef39c7466d Renamed the commonly used Position POJO into AdvancedPosition, as it also hold pitch, yaw and roll
Made GuiDropdown only accept instances of GuiEntryListEntry to avoid unneccessary toString() methods returning the name
Added GuiEntryListValueEntry which holds a Value and a Name to be displayed
Continued work on GuiObjectManager
2015-07-10 04:27:15 +02:00
CrushedPixel
16b74d9824 Included Path Interpolation methods in KeyframeList and uses it in PathPreviewRenderer
Created newInstance() method in KeyframeValue interface
2015-07-08 23:55:48 +02:00
CrushedPixel
5100b63964 Warning, GIGANTIC COMMIT!
Replaced Keyframe subclasses with Generic Types of Keyframe and replaced all instanceof calls
Replaced implementations of Linear and Spline interpolation to interpolate any Object that extends KeyframeValue and contains at least one public double Field. I'll need this for Keyframe interpolation in CustomImageObject Transformations
Made MarkerKeyframe *no* subclass of Keyframe to avoid conflicts with PositionKeyframe in instanceof checks for Keyframe#getValue
Created KeyframeList which extends ArrayList to provide some helping functions which DRY up the ReplayHandler
Split up ReplayHandler's keyframeList into timeKeyframeList and positionKeyframeList
2015-07-08 04:13:24 +02:00
johni0702
0c94bc9ce6 Set fov modifier during rendering to 1 when in camera view 2015-07-07 14:33:25 +02:00
johni0702
38b49d8f4c Play the replay a few ticks in advance of the video to work around entity interpolation 2015-06-30 13:01:14 +02:00
johni0702
a058497727 Fix all warnings
Add and make use of Lombok
Remove Mojang API
Remove ZipFileUtils
Remove StreamTools in favor of Apache IOUtils
Keyframe should be abstract all derivatives final
Replace clone in Keyframe with copy
Move some constants from GuiReplaySetttings to GuiConstants
2015-06-29 21:45:37 +02:00
johni0702
f19fc0ab36 Use ffmpeg for video exporting (default webm)
Remove monte media lib
2015-06-29 13:02:41 +02:00
CrushedPixel
a15187b3ec Added Render Success Sound Effect 2015-06-22 13:19:41 +02:00
johni0702
b0f253538c Fix crash on exit of replay (no longer processing clicks mid-rendering) and OpenGL error warnings
Remove MCTimerHandler, instead always install the ReplayTimer
2015-06-16 19:33:48 +02:00
johni0702
d171ff4346 Allow custom resolution for all video rendering modes
Remove tiled rendering
Choose different rendering strategy based on video size and framebuffer support
Make size of video writer queue configurable via system properties
2015-06-03 21:20:03 +02:00
CrushedPixel
fe036d72d8 Added Spectator Keyframes and handles them properly in both normal and rendered Replay Paths 2015-05-31 13:54:34 +02:00
johni0702
c7d974b24d Use ASM instead of inheritance to override methods in RenderGlobal 2015-05-25 13:13:21 +02:00
johni0702
7d9b92423d Fix entities not being rendered in the first frame 2015-05-24 13:45:28 +02:00
johni0702
18f22f57d0 Rework rendering
Adds default, stereoscopic, tiling, cubic and equirectangular frame rendering
2015-05-23 14:58:34 +02:00