9

I have made a script to generate a game asset in one click ( http://blenderartists.org/forum/showthread.php?383624-Dark-Blender-(Official-Thread)-optimized-for-sculpting-and-game-asset-creation ). My script save the textures by doing a render and import them with the .0001 number meaning frame 1. If the frame is changed my script is unable to find the texture.0001 so i want to set at the beginning of my Python script the frame to 1.

Danyl Bekhoucha
  • 3,722
  • 13
  • 47
  • 96

3 Answers3

30

You can set the current frame by calling:

bpy.context.scene.frame_current = 1

bpy.context.scene.frame_set(1)

This will set the scene frame and updates all objects immediately, see the docs: https://docs.blender.org/api/current/bpy.types.Scene.html#bpy.types.Scene.frame_set


Related: How to stop Action Constraint giving different results when code is run in text editor vs python console?

Use the method frame_set(...) instead. It forces an immediate update of all objects in the scene, including animations (transformation matrices etc. will be calculated)

brockmann
  • 12,613
  • 4
  • 50
  • 93
3

(For Blender 2.83+) In order to advance to the next frame, get the frame you're on currently and add one to it. Set that using frame_set:

currentFrame = bpy.data.scenes['Scene'].frame_current
bpy.data.scenes['Scene'].frame_set(currentFrame + 1)

Otherwise replace currentFrame + 1 with the frame number you want:

bpy.data.scenes['Scene'].frame_set(10)

This assumes you're in the default scene, 'Scene'. In 2.83...

bpy.context.scene.frame_set(10)

...still works for whatever scene you happen to be in.

0

A simple solution that's easy to understand

C.scene.frame_set(C.scene.frame_current+1)
Gorgious
  • 30,723
  • 2
  • 44
  • 101
Adam Earle
  • 23
  • 5