Stop Motion OBJ (OBJ, STL, PLY sequence importer) - v2.1.1

Wow, this is very helpful and in just the right time for me. Thank’s a lot! Alembic is still not fully implemented and this was the only way.

I’m you find the addon helpful! If you don’t mind sharing, I’m always excited to see how you guys are using the addon.

I had to convert animated metaballs to mesh sequence, so that modifiers could be added.

Hineverhood311

I also tried the script and it worked pretty nicely. I want to use it to prepare an fbx animation based on a fluid sim. So I exported the fluid sim as a sequence of obj and re-imported them using your script. I am however novice on blender. How can automatically convert the this sequence to keyframes, thus fbx can have embedded the animation.

thanks

Hi kkakosim,

Unfortunately, I’m not very familiar with the FBX format and its capabilities. From the research I did just now, it doesn’t look like it supports mesh sequences. It looks like it also doesn’t support animated visibility, so you couldn’t use the bake feature.

Why do you want to put it into an FBX file?

Hi, I would like to render 1300 ply files (total 13Gb) as an movie. By looking at the demo video, it seems like all meshes are loaded into memory at the beginning. Is that the case? Do you have any recommendation for rendering a sequence of such a size?

After doing some research, I think I need something different, probably https://docs.blender.org/api/blender_python_api_2_74_0/bpy.app.handlers.html

With a handler I can create a simple script that replaces the model every time the frame changes.

Yes, That is accurate.

Currently, your best bet would be to split the sequence into smaller chunks that each fit in memory and create separate .blend files for each chunk. Remember that Blender “inflates” the data slightly so if you have 4GB of files to load, it might end up being ~4.5GB in memory.

This is what Stop Motion OBJ is doing already. Unfortunately, that’s one of the limitations of the script (and of Blender, in my opinion). Each time you tell Blender to load a mesh, it creates a new one and your previous one remains in memory. As far as I can tell, the only way to free up memory in Blender is to save your file, quit, and reload Blender.

I’ve tried this already, but if you can find a way to create one mesh and replace its mesh data in-place, I’d be REALLY interested to hear how you did it :yes:.

Have you considered making it possible to export the obj sequence as an alembic (.abc) format? I was just curious because I cannot find any other tools out the that will convert an obj sequence to an alembic file for me. Now that Blender supports exporting an Alembic sequence, what you would need to do is make the animation a single changing mesh, instead of just hiding and showing different meshes each frame. Is that even possible to do?

Just an idea. Thanks.

CyberBurst, that’s a good idea but I neither have the knowledge of the alembic file format nor the time to make it happen. Also, it’s a little outside the scope of this addon, though it’d make a nice helper addon.

I’m also wondering why you can’t export the mesh sequence as an alembic file in the first place, like in the software you used to create the mesh sequence. What’s your use case like? Where are you getting your OBJ sequence from in the first place?

Great addon sir…

Also using huge raw optical scan mesh sequences here for facial animation. This is something I started back in 2012 and have been asked to revisit it.

I’m not a coder in the slightest, but did figure out a pretty dirty way to load each frame on demand so it would ‘create one mesh and replace its mesh data in-place’ while freeing up any orphan data from memory. The 200 frame sequence (3.4gb of OBJ’s) in that video would take up more than 16GB if cached… Also the resulting save file from Blender comes out to be 6gb compared to a 50meg setup file.

anyhow you can have a look at my coding attempt here

Thanks a ton for your addon. Found this video on youtube showing how it can be used for Blender Eevee

I might try this out myself.

Melvi! Did you use my addon to make this video? That’s awesome!

No. I didn’t make the video or it’s content. I posted it here so that ppl can see how useful it is and how it is implemented. In the comment section, the guy who made the video was kind enough to share how he did it using your addon. Since Blender 2.8 eevee doesn’t support deformation animation with skeletons, blenshape. e.tc. He also provided a link to your addon as well in the comments.

He knows a lot about Blender eevee from his youtube channel content.

My apologies for not communicating it better. I have edited the previous post to get it across better.

New feature/bugfix: If your sequence has multiple materials (one for each frame, for example) the addon now loads all of these materials.

You need to choose whether you want dynamic (multiple materials) or static (one material shared by all frames) BEFORE loading the sequence. There’s a new checkbox just above the Load Sequence button:

Thanks to Mike Brondbjerg for finding this bug and gently prodding me to fix it.

Go grab the latest version here: https://github.com/neverhood311/Stop-motion-OBJ/releases/tag/0.2.79.1

Thanks for good job

1st of, amazing tool, ive been using it for a couple of weeks and its a real workflow power house.
i use it with OBJs exported from a fractal progrma called Xenodream (it rocks the house) - but in order to get details each of my objs is like 1.5million triangles and i usually render out 700-1000 frams (objs…) per fractal/morph.
so it takes a long time to import, which is fine, ive been doing 200 at a time, as more then that it seems to take way to long…(i also keep the console open to see progress)
my meshe shave a weird pivot point (or point of origin) and in order for me to change point of origin so i can rotate or move the sequence, i need to do it for each frame…which i cant because my files are so big blender freezes basically each time i do something, it unfreezes, but is a pain in the ass. which brings me to my next request, ive tried adding a modifier to the sequence, but it seems to just change the first or current frame, maybe an option to be able to affect them all at once, would be useful for high poly meshes.
maybe even an option to import them but only load or only have visible the first frame, so i can actually do something with it, and animate and what not, then when im ready to render, load the rest of the sequence.
ive been doing this manually, and matching up the sequnce to the indivdual obj, but…its super slow and like i said my POO is diffrent, so i need to do it by eye which rarley works.

so…

  • some way to add a modifier on imprort (for high polys), or just a way to add a modifier that effects the whole sequence (kinda like the shader smoother you added)
  • some way to “preview” the import, maybe showign 1 frame, or evrey 5 frmaes…and a way to bring the rest in for the render - this seems kind of imposible, but i think you get the idea of what im saying, i want to be able to move and rotate and play with the sequence without the computer having to compute each obj evrey time i move it.
  • a way to chnage the origion pont of the whole sequnce.

Thanks so much man it really is a great tool and im going to doante the secon dthis months pay check come sin ;)!

Which version should be used with 2.79b? The 2.79.1 version or the master? Thanks

Use the 2.79.1 version (also called r1.1.0) https://github.com/neverhood311/Stop-motion-OBJ/releases/tag/0.2.79.1

The 2.80-compatible version of Stop Motion OBJ is still in development but currently blocked because OBJ import has not been fixed in Blender 2.80 yet.

Thanks for your feedback. Some comments and questions:

Which modifier are you trying to use on the sequence? I’ve successfully used the Wireframe modifier on the whole sequence without making any special changes.

“Previewing” the import is a feature that’s been requested by several people. With large sequences, speed is a problem, but memory is a bigger problem. You have to bring the entire mesh sequence into memory to view it and it tends to fill up pretty fast. I’ve been looking for ways to sidestep this problem for a long time.

To change the origin point of the sequence, can’t you just import the sequence, create an empty object as its parent, then move the parent? Or am I misunderstanding your question?