Friday, August 18, 2023

Painting prints

 My son has been asking for modified action figures that look like his favorite five nights at Freddy's characters. (Hes 5 so he hasn't played the game, he just likes how they look)

So I downloaded the models, sculpted them onto the existing action figures, and got some acrylic markers to paint them.

This is the base model all the other characters are built on. I just used blender to bolt on other models, or sculpt into shape.


My first attempt, I basically just copy pasted the characters' head (his name is Monty) onto the original robot. I also added a guitar from another model.


He loved it, but asked if I could make the legs and arms rounded on the next one. So I used blender and manually moved vertices to make the corners more rounded. This is Freddy.


This was great, but not rounded enough... So my next model, I basically just modeled from scratch and only kept the original joints so it would still work as an action figure. This one is called Puppet


Now these are starting to look better...
Here is what puppet looks like in the actual game: 

Next was a character with similar rounded arms, but he had baggy pants for legs, so I sculpted these from scratch as well.

This character has an "alternate" personality that I made a second version for as well.


I really like this process not only because I'm getting better, but also specifically because I'm getting better in front of him. He gets to see each version getting better and better, and it's showing him that anyone who is good at something, started way worse than where they are now, and its a slow process you have to keep up with.

Thursday, May 18, 2023

Sharing prints

 We went to a diner close by, and the waitress was admiring a 3d printed toy Declan was playing with, so Declan then offered "My dad could make one for you" 

This has been one of my goals from the beginning with Declan... Instead of being proud of the talents me or Halley have, wanting to share them with others...

The waitress said if we did make them, they'd need to be the same so her sons wouldn't fight over them. 

So here they are.
 

We'll drop them off the next time we go there.

Friday, April 14, 2023

More multi-color 3d prints

They take longer (separating the model into parts, printing them separately, gluing together)
But they look so much better. (He's been really into Mario lately because of the new movie)







And I always love when friends come over, and I can print things for their kids (They loved the collapsible sword, so I asked their favorite colors and printed one for each kid)

Thursday, January 26, 2023

Multi-color 3d print

 Biggest 3d print I've done for him so far: (the bowser)





The gem/crystal is printed in a multi-color filament.

Tonie randomizer

 So recently my son has been asking for new audio on his TonieBox. Most of the time he falls asleep before the 2nd/3rd/4th chapter/audio play, so I decided to make an automated tonie-shuffle script.

A toniebox is basically an mp3 player, that lets you pick what audio you want by using little action figures (it uses rfid similar to amiibo like the switch). You can also upload your own audio with special creative tonies. I use these tonies to upload audio from his favorite tv shows.

This batch script rips the audio from "totally legally" obtained tv shows.


If there is interest (comment or contact me irl/elsewhere) I could hack together a easier to use web-version, maybe even make it take youtube videos/playlists/spotify/etc)


1
for /r %%i in (*.mkv) do ffmpeg -y -err_detect ignore_err -i "%%i" -map 0:a:0 -c copy -c:a aac "%%~ni.m4a" 


This python script gets all the tonies, wipes them, and associates each creative tonie with a specific folder. Then gets all the audio files in that folder, shuffles them, and keeps adding them until the tonie is full.

Simple script, but should provide a bunch of fresh bedtime "stories" for him to fall asleep with.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import os
import logging
import random
import ffmpeg
from tonie_api import TonieAPI

//dictionary of toniename, to sub-folder to associate specific tonies with specific shows
my_tonies = {'Blue': 'sonic prime',
             'Blue Hero': 'ultimate spiderman',
             'Gray': 'octonauts',
             'Green': 'teen titans go',
             'Pink': 'miraculous',
             'Pink Hero': 'spectacular spiderman',
             'Pirate': 'tmnt',
             'Vampire': 'marvels spiderman'
             }

path = "folder containing audio"

dry_run = True


def get_all(path):
    files = []
    count = 0

    for (dirpath, dirnames, filenames) in os.walk(path):
        for filename in filenames:
            full_path = os.path.join(dirpath, filename)
            files.append(full_path)
    print("")
    return files


# set up detailed logging
logging.basicConfig()
logging.getLogger().setLevel(logging.INFO)

api = TonieAPI('your@email.com, 'password')

# update all housholds, returns IDs of households
households = api.households_update()
for household in households:
    if households[household] == 'HOUSEHOLD NAME':
        our_household = household

print(f"Our HousedholdID: {our_household}")

# update all creative tonies, returns IDs of creative tonies
tonies = api.households[our_household].creativetonies_update()
print(tonies)

for tonie in tonies:
    print(f"\nTonie Id: {tonie} Name: {tonies[tonie]} Audio: {my_tonies[tonies[tonie]]}")
    audio_folder = f"{path}\\{my_tonies[tonies[tonie]]}"
    time_left = 5400

    if os.path.exists(audio_folder):
        if not dry_run:
            api.households[our_household].creativetonies[tonie].remove_all_chapters()
        print(f"Cleared tonie: {tonie}")
        files = get_all(audio_folder)
        random.shuffle(files)
        for file in files:
            info = ffmpeg.probe(file)
            duration = float(info['format']['duration'])
            if duration < time_left:
                time_left = time_left - duration
                filename = os.path.split(file)[1]
                print(f"Uploading: {filename} duration:{duration} left: {time_left}")
                if not dry_run:
                    api.households[our_household].creativetonies[tonie].upload(file, filename)
    else:
        print("Skipping...")

Friday, December 30, 2022

More 3d printing stuffs

A buddy of mine recommended that I try printing this candy dispenser, its definitely a hit.






Thursday, December 22, 2022

xmas light sculpture 2, electric boogaloo

  This year my son is into mermaids... so we're turning this into a tradition...









Next year Im thinking of using ws2815's and making it animate :)


More custom action figures

 When your son wants an action figure that doesn't exist... You 3d print it! Here is what it looks like in the game. And here is what I ...