// Excellent knowledge of Blender and building tools in Python to extend Blender's compatibility with real time render engines
// Worked extensively in Lens Studio and Spark AR to create complex Augmented Reality experiences
// Extensive knowledge of Houdini and creating tools via Vex and Python
// Created experiences using Snapchat's newest technology before release to provide feedback as well as create content for them to sell with
// Proven track record of continuously improving the content pipelines
// Ability to work in the required environment with strong knowledge in the top 3D suites (Blender, Maya, C4D, Houdini)
// Technical Artistry
// Created complex animations both abstract (particles, MoGraph, etc.) and life like (animals, environment, etc.)
// Strong use of Javascript and Python either creatively or in the pipeline
// Formulated complicated rigs to achieve the appropriate animation in a real time engine setting
July 2019 - Jan 2021
R&R Partners
Phoenix, Arizona // 3D Motion Designer
// Worked closely with designers, project managers, and developers to ensure design accuracy and consistency
// Very fluent knowledge of After Effects and Blender/C4D
// Thorough knowledge of render engines and how they work in order to compress and optimizing any project
// Very clean file and project management with everything be labeled for ease of use by others
// Created templates in any instance where it would increase our productivity
// Track record of being able to take a last second project and because of my extensive knowledge work out a way to deliver every single time
// Led entire brand motion design looks
// Experienced in compression and file formats often offering my expertise to fix file issues throughout the company
// Wrote After Effects scripts and plugins in order to create efficiencies when we were required to output a very large list of content on a daily basis
October 2013 - Present
Alecacosta.me
Colorado Springs, Colorado // Technical Creative
// Have had the chance to work on a large number of projects through my own website including a mixture of 2D and 3D animations and asset creation.
// Created several Snapchat filters
// Heavy use of Video Editing and Color Correction to tell stories
// Helped companies strategize a creative plan and helped them execute said plan
December 2013 - February 2018
SK+G
Las Vegas, Nevada // Motion Graphics Artist
// Created motion graphics daily for a large number of casinos
// Often created the concept and then executed acting as a one man show
// Lifestyle of Vegas never sleeps and neither does content creation often pulling insane timelines but always delivering on time with nothing but compliments to our work
// As a 2 man department I became very skilled at delegating work to get us across the timeline
// Trusted on many occasions to create complex unique effects pushing me to learn everything about my tools
Skills
// Extensive knowledge of : { Blender, Maya, C4D, Houdini, Substance Painter, 3D Coat, Spark AR, Lens Studio, Unreal Engine, Unity, Photoshop, After Effects}
// Experience with the creation shaders across many platforms
// Ability to think creatively and resolve technical challenges and limitations
// Strong vision of how to improve a faulty pipeline without a setback in production
// Expertise in graphic production methods and pipelines
// Understanding of how to create complex rigs in Blender and Maya that will translate well to real time engines
// Non destructive workflow fan-boy using Houdini and Blender(modifiers/geo nodes) when possible to make client changes a breeze
// A general love for the creative and technical process with a special skill of bringing both sides together with a solid understanding of the way forward
Blender
Blender is home for me. It is where I feel most comfortable and where my largest contributions to pipelines have happened. This page will be updated through time to showcase scripts and plugins created for my teams. Actual download links will not exist unless the project was done specifically for R&D purposes and not in production pipelines.
[My areas of expertise in Blender]
Non destructive modeling
Geometry Nodes tools
Python Scripting
Complex Rigging & Controllers
Fluent animation
Procedural texturing
Strong knowledge of exporting rigs/animations for engines
UV unwrapping + UV management for engines
Expert knowledge to provide solutions in all areas of Blender
01.
Scripts
# Alec Acosta
# Blender Particle Baking
#
# V 1.1
# Updates:
# 1.1 -
# Added option for visibility keyframing
# Fixed issue with particles that start later having the wrong starting position
# Removed some redundant code
#
# How to use:
# 1. Create particle system static or animated wtih physics
# 2. Create an instance geometry such as a cube or vertice if you want to attach nulls
# 3. Select particle system then select instance geometry
# 4. Run script and look for a new set of objects named "particle.001" etc.
#
#
import bpy
# Key inputs. Change occordingly.
KEYFRAME_LOCATION = True
KEYFRAME_ROTATION = True
KEYFRAME_SCALE = True
KEYFRAME_VISIBILITY = False # Viewport and render visibility.
def create_objects_for_particles(ps, obj):
# Duplicate the given object for every particle and return the duplicates.
# Use instances instead of full copies.
obj_list = []
mesh = obj.data
for i, _ in enumerate(ps.particles):
dupli = bpy.data.objects.new(
# Still hard coded change 3 to number of trailing numbers in particle names
name="particle.{:03d}".format(i),
object_data=mesh)
# 2.80: link to objects in collection
bpy.context.scene.collection.objects.link(dupli)
obj_list.append(dupli)
return obj_list
def match_and_keyframe_objects(ps, obj_list, start_frame, end_frame):
# Match and keyframe the objects to the particles for every frame in the given range.
for frame in range(start_frame, end_frame + 1):
bpy.context.scene.frame_set(frame)
for p, obj in zip(ps.particles, obj_list):
match_object_to_particle(p, obj)
keyframe_obj(obj)
def match_object_to_particle(p, obj):
# Match the location, rotation, scale and visibility of the object to the particle.
loc = p.location
rot = p.rotation
size = p.size
if p.alive_state == 'ALIVE':
vis = True
else:
vis = False
obj.location = loc
# Set rotation mode to quaternion to match particle rotation.
obj.rotation_mode = 'QUATERNION'
obj.rotation_quaternion = rot
obj.scale = (size, size, size)
# 2.80: hide_viewport instead of hide
obj.hide_viewport = not(vis)
obj.hide_render = not(vis)
def keyframe_obj(obj):
# Keyframe location, rotation, scale and visibility if specified.
if KEYFRAME_LOCATION:
obj.keyframe_insert("location")
if KEYFRAME_ROTATION:
obj.keyframe_insert("rotation_quaternion")
if KEYFRAME_SCALE:
obj.keyframe_insert("scale")
if KEYFRAME_VISIBILITY:
# 2.80: hide_viewport instead of hide
obj.keyframe_insert("hide_viewport")
obj.keyframe_insert("hide_render")
def main():
# Assume only 2 objects are selected.
# The active object should be the one with the particle system.
ps_obj = bpy.context.object
obj = [obj for obj in bpy.context.selected_objects if obj != ps_obj][0]
# 2.80: Get the dependency graph
dg = bpy.context.evaluated_depsgraph_get()
# 2.80: Get an evaluated object from it
eval_obj = ps_obj.evaluated_get(dg)
ps = eval_obj.particle_systems[0] # Assume only 1 particle system is present.
start_frame = bpy.context.scene.frame_start
end_frame = bpy.context.scene.frame_end
obj_list = create_objects_for_particles(ps, obj)
match_and_keyframe_objects(ps, obj_list, start_frame, end_frame)
if __name__ == '__main__':
main()
02.
Plugins
Coming Soon
Contact Me
Let's chat about the future
[Fields marked with an asterisk (*) are required.]
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.