Fix T41118: Mesh cache modifier cannot use sub-frames stored in .pc2 files?

Actually issue was in pc2 exporter, which was not handling subframes correctly.
This commit is contained in:
Bastien Montagne 2014-08-25 15:33:23 +02:00
parent 9c84ce1262
commit 09dd79eddd
Notes: blender-bot 2023-02-14 10:19:59 +01:00
Referenced by issue blender/blender#41118, Mesh cache modifier cannot use sub-frames stored in .pc2 files?
1 changed files with 13 additions and 12 deletions

View File

@ -19,8 +19,8 @@
bl_info = {
"name": "Export Pointcache Format(.pc2)",
"author": "Florian Meyer (tstscr)",
"version": (1, 0),
"blender": (2, 57, 0),
"version": (1, 1),
"blender": (2, 71, 0),
"location": "File > Export > Pointcache (.pc2)",
"description": "Export mesh Pointcache data (.pc2)",
"warning": "",
@ -41,16 +41,17 @@ cacheFile -pc2 1 -pcf "<insert filepath of source>" -f "<insert target filename
"""
import bpy
from bpy.props import *
import mathutils, math, struct
from os import remove
import time
from bpy.props import BoolProperty, IntProperty, EnumProperty
import mathutils
from bpy_extras.io_utils import ExportHelper
def getSampling(start, end, sampling):
samples = [start + x * sampling
for x in range(int((end - start) / sampling) + 1)]
return samples
from os import remove
import time
import math
import struct
def get_sampled_frames(start, end, sampling):
return [math.modf(start + x * sampling) for x in range(int((end - start) / sampling) + 1)]
def do_export(context, props, filepath):
mat_x90 = mathutils.Matrix.Rotation(-math.pi/2, 4, 'X')
@ -62,7 +63,7 @@ def do_export(context, props, filepath):
apply_modifiers = props.apply_modifiers
me = ob.to_mesh(sc, apply_modifiers, 'PREVIEW')
vertCount = len(me.vertices)
sampletimes = getSampling(start, end, sampling)
sampletimes = get_sampled_frames(start, end, sampling)
sampleCount = len(sampletimes)
# Create the header
@ -74,7 +75,7 @@ def do_export(context, props, filepath):
file.write(headerStr)
for frame in sampletimes:
sc.frame_set(frame)
sc.frame_set(int(frame[1]), frame[0]) # stupid modf() gives decimal part first!
me = ob.to_mesh(sc, apply_modifiers, 'PREVIEW')
if len(me.vertices) != vertCount: