sprockets frosted donut medals buildings Rubik's Cube Nidaros Cathedral Tongue Sandwich A:M Composite
sprockets
Recent Posts | Unread Content | Previous Banner Topics
Jump to content
Hash, Inc. - Animation:Master

All Activity

This stream auto-updates

  1. Today
  2. Sounds good - talk to you then and thanks.
  3. I'm a bit ashamed for the Walrus. Pity to see such a kind animal being treated in Qiake.
  4. Edward, what you have is a good result that many would envy. When you have time to come to LAT, bring an example of the model-with-folds and we can look at handling that. One smartskin can have keys for any angle or all angles. While in the smartskin window, while you are in CP mode, you can use the next keyframe and previous keyframe buttons to jump to smartskin keys you have already made. Return to skeleton mode to see the bone angle for that key, or to move the bone to make a new key. Remember that when making smartskin, you will need to have things like IK constraints OFF so that you can move the actual geometry bones that drive the smartskin.
  5. Guess I was trying to get more realism in the folds of the armpit and elbows but when I model the folds realistically it turns into an un manageable mess with millions of CPs. I even had to make a set of bones for the front and back since they behave differently. Adjusting them so they look good with arms lowered but don't look good being raised or from top view rotating forward/backward. Just couldn't get it to work. That's why was hoping to find some tutes to get better with Pose (adding frames & keyframing) or Smartskin. For example-can Smartskin handle all the CPs when rotating the arm at ALL angles or just one axis? And can you view CP keyframing in the timeline? Can't seem to find these answers in the manual (or just don't know where to look) Anyways thanks for responding robcat, madfox.
  6. Yesterday
  7. Well, to understand the question reasonably I made a Suit for Thom. I repatched it a bit to fit its belly, and then made a Cloth_Suit and a Deflector _suit with the specific bound. Then I made a stand function for Thom, and related the Constraints of mysuite.mdl bones to Thom as "Translate to" and "Orient_like". I imported the "Cloth_suit" and patched it to the lower part of the suit down the shoulders from the mysuite.mdl. I imported the "deflector_suit" and patched it to the three midle rings of Thom's belly. Then I rendered Thom_suit05.cho with the SimCloth_Simulate. THe result is a bit harsh, so I corrected them to give the feeling of a Suit dangling a bit down with his stand pose. I'm sure Rob_Cat has a much better aproach to it, but it was just my curiosity. stand00.mp4 Tom_Suit_Cloth.zip stand04.mp4
  8. Edward, tell us specifically what you don't like about what you have so far.
  9. We'll dive into answering your A:M questions at Live Answer Time, Noon CDT Saturday August 2, 2025! Modernist painter Arthur Dove was born on this day in 1880. Sails (1912) Dogs Chasing Each Other (1929) Space Divided by Line Motive (1943)
  10. Thanks for the responses. Can't make it to LAT tomorrow, will have to wait until next week.
  11. Hey svetlic.., I see what you try to archive. Cloths tutorial are a bit rare in AM, as it has changed over the years. Before 2015 this was doin with a specific spring producere. Nowadays it is calculated on another part of the program. I have been trying a lot with the "Diana in a Dress" tutorial. This shows you how to connect the dress part with a cloth extention to the hip rig of the model. That way it acts as the hip bone to the dress bone to move alike, and then makes the dress jump in a funky way. I'm looking to your file and I am trying to fit in TOM. As far as I can see I have some helpfull files for you. You can download the Extra DVD here: https://www.dropbox.com/scl/fi/a9mpg510xtg24uez8nwxd/ExtraDVD_Tutorial_part1.zip?rlkey=p8xk64cm9oi2kmglc3nacllxc&st=tcfrfflf&dl=0 There are some tutorials about the cloth setting. diana in a dress.zip cloth95.zip clothtut.zip diana_in_a_dress.mp4
  12. Perhaps we can take a look at this at Live Answer Time.
  13. Been struggling with this for years (not an exaggeration) and using Mike Fitzgeralds rigging CD but wondering if anyone has made a more recent tutorial for this? Attached is one I'm trying to rig for a suit coat and the funky way it folds in the shoulder but can't get it dialed in. Even shldrs I rigged in my robot movie never looked good so hoping somebody has made some more recent tutes on this. Any help appreciated. SuitCoat.prj
  14. Last week
  15. I've been messing about with a 'watchfolder' script (in python) that monitors a directory and when it finds a new sequence of PNG images it converts the sequence to MP4 video and moves the PNG sequence to a datetime stamped directory inside a 'processed' directory. There are a number of things that are still rough about the program. Firstly, the majority of people will not install python, set it up, run python programs etc. right? Correct. So, I compiled it into an executable .exe file. That seems to work pretty well. The python script has a watchfolder.ini file where users can quickly adjust settings. If no .ini file is found default locations and values are used. [settings] watch_dir = F:/watch_folder ffmpeg_path = ffmpeg framerate = 24 timeout = 5 video_basename = video max_runtime_minutes = 30 reset_timeout_on_video = true Here we can see: - The script uses a specific directory/folder so that's where the PNG sequence would need to be rendered to - The script uses FFMPEG for the conversion and the path here suggests it is in the users environmental settings. Perhaps better to specifically state where the FFMPEG executable files are located. For example: C:/ffmpeg/bin - Framerate can be changed to allow more (or less) frames to be generated. - The timeout is in seconds and suggests how long the utility waits to see if another frame is being generated. If frames are expected to take longer than 5 seconds to render this value should be increased. - The base name of the output video can be changed here (it's just named video by default and new videos get incremented with a number each time a new video is created (video1.mp4, video2.mp4, etc.) - Max runtime (if set) limits how long the watchfolder program will monitor the folder. - The timer for the max runtime can be set to refresh each time a new video is created so a new 30 minute timer starts. Set to false if a reset of the timer is not desired. The actual python script: import os import time import shutil import keyboard import subprocess import re from datetime import datetime import configparser # === DEFAULT CONFIG === DEFAULTS = { "watch_dir": "F:/watch_folder", "ffmpeg_path": "ffmpeg", "framerate": "24", "timeout": "5", "video_basename": "video", "max_runtime_minutes": "0", "reset_timeout_on_video": "false" } INI_FILE = "watchfolder.ini" def load_config(): config = configparser.ConfigParser() if not os.path.exists(INI_FILE): config["settings"] = DEFAULTS with open(INI_FILE, "w") as f: config.write(f) print(f"[i] Created default {INI_FILE}") else: config.read(INI_FILE) for key, val in DEFAULTS.items(): if key not in config["settings"]: config["settings"][key] = val return config["settings"] def get_png_files(watch_dir): return sorted([f for f in os.listdir(watch_dir) if f.lower().endswith('.png')]) def get_next_video_filename(watch_dir, basename): count = 1 while True: candidate = f"{basename}_{count:04d}.mp4" if not os.path.exists(os.path.join(watch_dir, candidate)): return candidate count += 1 def guess_pattern(filename): match = re.search(r"([^.]+)\.(\d+)\.png$", filename) if match: prefix, digits = match.groups() return f"{prefix}.%0{len(digits)}d.png" return None def convert_sequence_to_mp4(watch_dir, first_file, ffmpeg_path, framerate, video_basename): pattern = guess_pattern(first_file) if not pattern: print(f"[!] Could not determine pattern from {first_file}") return output_name = get_next_video_filename(watch_dir, video_basename) output_path = os.path.join(watch_dir, output_name) print(f"[+] Converting to MP4: {output_name}") try: subprocess.run([ ffmpeg_path, "-y", "-framerate", str(framerate), "-i", pattern, "-c:v", "libx264", "-pix_fmt", "yuv420p", output_path ], cwd=watch_dir, check=True) print(f"[✓] Video saved as: {output_name}") except subprocess.CalledProcessError as e: print(f"[!] FFmpeg failed: {e}") def move_sequence_to_archive(watch_dir, png_files): now = datetime.now().strftime("%Y%m%d_%H%M%S") archive_dir = os.path.join(watch_dir, "processed", now) os.makedirs(archive_dir, exist_ok=True) for f in png_files: shutil.move(os.path.join(watch_dir, f), os.path.join(archive_dir, f)) print(f"[→] Moved PNGs to: {archive_dir}") def monitor(settings): watch_dir = settings["watch_dir"] ffmpeg_path = settings["ffmpeg_path"] framerate = int(settings.get("framerate", 24)) timeout = int(settings.get("timeout", 5)) video_basename = settings["video_basename"] max_runtime = int(settings.get("max_runtime_minutes", "0").strip()) * 60 reset_on_video = settings.get("reset_timeout_on_video", "false").lower() == "true" print(f"👁️ Monitoring folder: {watch_dir}") print(f"[i] FFmpeg: {ffmpeg_path}, timeout: {timeout}s, framerate: {framerate}fps") if max_runtime > 0: print(f"[i] Will auto-exit after {max_runtime // 60} minutes (unless reset)") start_time = time.time() previous_files = set(get_png_files(watch_dir)) last_change_time = time.time() while True: # Check for Escape key press if keyboard.is_pressed("esc"): print("[✋] Escape key pressed. Exiting.") break time.sleep(1) # Auto-exit if timer exceeded if max_runtime > 0 and (time.time() - start_time > max_runtime): print("[!] Max runtime reached. Exiting.") break current_files = set(get_png_files(watch_dir)) if current_files != previous_files: previous_files = current_files last_change_time = time.time() continue if current_files and (time.time() - last_change_time > timeout): png_files = sorted(current_files) print(f"[⏳] Sequence complete: {len(png_files)} files") convert_sequence_to_mp4(watch_dir, png_files[0], ffmpeg_path, framerate, video_basename) move_sequence_to_archive(watch_dir, png_files) previous_files = set() last_change_time = time.time() if reset_on_video: print("[i] Timer reset after video creation.") start_time = time.time() print("[✓] Monitoring stopped.") if __name__ == "__main__": try: settings = load_config() monitor(settings) except KeyboardInterrupt: print("\n[✓] Monitoring stopped by user.") My take is that this option for a hotwatch directory and execution of ffmpeg script would be best added to Animation:Master itself but if there is interest we can pursue this and more. This script only converts PNG sequences to MP4 video but all manner of video formats is possible and even gif animation. The utility currently does not have an interface/GUI but that would be a next step that allows the user to adjust settings in the interface and even opt for different outputs. Here's the sequence I was testing with: video_0017.mp4
      • 3
      • Thanks
      • Like
  16. Ohhhhhh.... you were using Lasso Line mode and I was using Lasso Draw mode! Yeah, I notice now that in v19.5 the Lasso Line mode behaves oddly, although it works correctly in v19.0. Try using the Lasso Draw mode if you are in v19.5 I'll make a bug report.
  17. See attached. All settings reset and perspective is OFF. Ok now for some reason I cannot attach a jpg, is there something funky going on with
  18. Hi Edward... It works OK for me. Try these -make sure you're not in perspective Mode. Numeric Keypad-9 toggles that on and off. -make sure the slash or comma keys are not stuck. -make sure no additional pointing devices are active, like a trackpad or a touch screen. -try a different mouse. -Nuke the whole thing with Help>ResetSettings and restart. Any change?
  19. Just me or did something happen to the Lasso tool? See attached .prj. On my machine no matter how I use the lasso tool it selects all sorts of seemingly random CPs - other than the ones I'm trying to select. Did I activate an unseen "moron mode" somehow? Is it just on my machine? Please see attached .prj and try it - any help appreciated. LassoTest.prj
  20. Thank you rob! Very helpful for what I am trying to do. Apologies for not being able to join as I had something going on today, but this answers my question so thank you once again.
  21. Earlier
  22. that produces the ball of gears?
  23. probe Master_64_BsKEoTxal5.mp4
  24. for example, the same as everywhere else - coordinates, quantity, size
  25. I dusted off A:M the other day just to scratch an itch to create, and 48 hours later I'm still here. Then I notice on the forum a contest happened when I wasn't looking! The entries are amzing, and congratulations to the winners. You all are amazing artists, and I am humbled be your talents.
  26. What would the input parameters be of this device?
  27. Congratulations! I really enjoyed the creativity and originality of the entries. Robert did a great job presenting the winners. This was fun.
  1. Load more activity
×
×
  • Create New...