Seagulls!
Two seagulls go fishing and find themselves in dangerous waters.

Seagulls is the result of my second-year group project at Bournemouth University, which I directed. I was in charge of ensuring the team got their work done, and I was also responsible for the project pipeline and all the FX.
For our assignment, we had to work in randomly selected teams of 4-6 people to create a 30 second animation over the course of 3 months.
I had the idea for Seagulls fishing over the Summer. I wanted to do a project that would focus on good visuals (animation quality, fx quality, etc.), and I also wanted something that was funny and cute.
I had begun developing a Houdini-centric USD pipeline at the time and wanted to use it in a full animation project.
Pre-Production
I began pre-production by doing some intial concepts and a basic animatic. I used these for my initial pitch to the rest of the class.
My idea was then approved and I was given 4 team members to work with. We had:
-
Christopher Hosken (me), Director & FX Artist
-
Eva Desmoutier, Character Artist & Clouds
-
Lewis Williamson, Prop Artist & Island
-
Yilin Luan, Concept Art & Animation
-
Haopu Chen, Titles & Animation
Our project supervisor was Eike Anderson.
Directing & Producing
As the Director & Producer, I was responsible for the direction of our idea and also making sure that it would be completed. My animatic and concepts that I had made before-hand ensured more time to focus on refining models, movement, and overall polish for a stronger final piece. My producing responsibilities included scheduling meetings, preparing presentations, tracking progress, and ensuring the team’s workload remained balanced.
Below you can see the original Gantt chart (left), verses how production really went (right).


One drawback to being Director and Producer is that it often leaves the rest of the team feeling beaten down. To combat this, I encouraged input from everybody and went for a more democratic approach to decision-making than dictatorship. Doing this allowed my team to come up with some great ideas that I would never have.
Pipeline
One unique aspect about Seagulls is that it’s one of the first group projects to utilise a USD Pipeline. Before beginning production, I read extensively about USD and how it works in a VFX and Animation Studio. Using what I had learnt, we could heavily parallelise numerous parts of our pipeline, in different softwares.
I based my pipeline off what I learn’t whilst making Heman. Alot of changes and iterations were made for it to work on a full shot basis. My research from Large Scale Simulations with USD in Houdini Solaris helped feedback into this pipeline dramatically.


I was in charge of maintaining the pipeline and teaching my team how to use it. We came across a few hiccups with model updates breaking rigs, however, overall it was a huge success!
Concept Art
Yilin Luan was responsible for creating the character concepts off the references I gave her. I wanted to go for an Illumination style animation so we took heavy influence from Discpicable Me (2010) and Migration (2023).




Haopu was responsible for the titles and credits. She did a wonderful job capturing the essence of the short into the design of them.
Modelling & Texturing
Once the concepts were finished, Eva Desmoutier and Lewis Williamson began creating the assets in ZBrush, Maya and Substance Painter. All our assets were saved out as USD files and used MaterialX for Cross-DCC rendering compatibility.
Rigging
I then started rigging all the assets that Eva and Lewis created. The biggest challenge I had was rigging everything in such a short span of time. To streamline the process, I relied heavily on Python scripting.
My workflow followed a structured approach:
-
Base Deformation: First, I built a skeleton that would deform the mesh .
-
Controls: Instead of manually setting up the constraints and controls. I wrote Python scripts to generate them. This allowed for rapid iteration. Any adjustments could be reapplied to the rig instantly.
For simpler props, I did manual rigging. My favourite prop was the fishing rod as I loved implementing the bend deformer, which showed very well in the final animation.

One important script snippet which I want to highlight is a text curve. Usually, text controllers split into each character and using them can be very frustrating. This Python script is how you would generate a single text curve to use as a controller.
def create_text_curve(name="", text="", font='Arial', size=1):
text_curves = cmds.textCurves(f=font, t=text)
curve_group = cmds.group(empty=True, name=name if name else "text_curve_group")
chars = cmds.listRelatives(text_curves[0])
curve_offset = sum(cmds.getAttr(f"{char}.translateX") for char in chars) / len(chars)
for char in chars:
curve_pos = cmds.getAttr(f"{char}.translateX") - curve_offset, 0, 0
for curve in cmds.listRelatives(char):
for curveShape in cmds.listRelatives(curve, shapes=True):
cv_list = cmds.ls(curveShape + '.cv[*]', flatten=True)
for cv in cv_list:
cmds.xform(cv, relative=True, translation=curve_pos)
cmds.parent(curveShape, curve_group, relative=True, shape=True)
cmds.delete(text_curves)
cmds.scale(size, size, size, curve_group)
cmds.makeIdentity(curve_group, apply=True, t=1, r=1, s=1, n=0)
return curve_group
Animation
I then handed over the rigs for Yilin and Haopu to begin animating. As the entire short was 1 shot, we found a complex referencing technique that allowed them to work in seperate files but still be able to see each others changes.
As everything was referenced (through USD as well as Maya), we were able to quickly make changes to textures, rigs, geometry that would feed straight into the animation.
FX
I did all the FX for this project inside of Houdini. Utilizing our USD pipeline, I was able to override any of the animations using layers to make changes as well as utilise Houdini Procedurals for faster and more efficient rendering.

Feathers & Fur
Whilst animation was underway, I worked on the feathers for Gulliver and Jeff (the seagulls). I used a Houdini Fur Procedural for the base “fluff” on the body, and a Houdini Feather Procedural with seagull feathers (that I made) to scatter on the wings and tail. The feathers were then deformed with a point deform by using the feather mesh from the animation.


Oceans & Water
For the ocean, I used the Houdini Ocean Procedural in combination with a FLIP simulation to merge the splashy water with a large ocean surface. I then did a white water simulation to add more splashy and foamy detail to the scene.
The biggest challenge with simulating the ocean was the time it took to cache. From FLIP sim to final mesh, it took about 30 hours. This made trying to iterate over the sim extremely difficult. Given more time, I would have liked to refine the fluid simulation so that it interacts with the oars and so that the shark is more visible when it chases after the boat.
Extra
The newspaper was a quick vellum simulation that I did over the animation. The ocean’s spectrum was used to help make the newspaper float in the water.


Once I had completed all the FX, I cached out into the FX layer, which I could then disable and enable whilst doing lighting tests.
Lighting, Rendering & Compositing
Lighting was quite simple for this animation. I placed a Karma Sky into the scene, adjusting the elevation and azimuth, and instantly we had some good results. I also edited a couple of materials so that they integrated into the scene better.
For rendering, I decided to render directly into OneDrive. This made getting rendered files much easier. The one downside to this was syncing files into the PCs for rendering. Since the project was around 250GB, syncing the files took about an hour. Houdini’s Karma also seemed to render “dead frames”; frames which were broken. I had to spend a lot of time re-rendering the dead frames so that the whole animation looked complete.
I had to solve a few issues in rendering, such as enabling Legacy EXR Mode in Karma so that Cryptomattes worked. I also created primvar AOVs, which meant I could render out specific mesh attributes (such as my “whitewater emission” mask).


Using these custom AOVs, I could refine my renders in compositing. For example, I could use my whitewater emission AOV to add whiteness to my fluid. I also split the scene into 4 layers (Sky, Island, Foreground, Whitewater), which I then combined in compositing. This dramatically sped up rendering.
When compositing, I had to manually do some rotopaint and masks to hide glitches in the water, and intersecting geometry.


Final Edit
Since Seagulls! has only one shot. The final edit was extremely simple to do. I went online to find sounds for the animation and placed them into the edit. I was also able to get in contact with an external music producer, Hamza Aydın, who created the score.

Final Notes
Being a Director and Producer for this project helped me grow dramatically in teamwork skills. I had to learn how to delegate work to people and make sure that everyone was on track. I was worried that the project would result in me having to take a dictator style of leadership. Luckily, my team was extremely communicative and willing to discuss ideas that I was able to take on a more democratic technique. I believe that this is the best approach to leading a team (as long as your team is cooperative).
Being a director has also been fulfilling in learning how to communicate my ideas to my team. When working alone you often don’t have to explain to yourself what you’re envisioning, but when working with others this skill is key. I was able to improve my ability at doing this through talking both artistically and technically with my team, while trying to be as encouraging as possible.
Although we had a few miscommunication mishaps throughout production, we were able to quickly overcome them and nobody felt hard-done by. This helped me see that taking a positive approach to work (even when you’re annoyed at having to redo things), helps improve team morale dramatically. I hope to take this attitude with me into the VFX and Animation industry.
I have been extremely blessed to have been given a team that was willing to cooperate and wanted to do the best it could. Without them, Seagulls would have never been as successful as they have been. Being able to trust my team members with their work gave me time to refine my USD pipeline as well as learn new FX techniques. I have learned how to lean into other people’s strengths and not solely rely on myself for doing the work.
Written by Christopher Hosken on May 3rd, 2025