從這樣
變這樣Tech Animation Artist Learning Space
I have been a 3D animator in game industry for over a decade. I also interested in script and love to solving problems. Now I am learning how to write plugin.
Tuesday, 16 January 2024
Saturday, 16 December 2023
Blender add/remove blank frame
The following is roughly what I obtained after communicating back and forth with ChatGPT for about an hour. It's a new animation functionality plugin that allows for convenient addition or removal of "blank frames" between keyframes. Let's take a look at the effect.
https://youtu.be/4FL3Wb2bpNk
Actually, I searched online several times. Either someone asked the same question without an answer, or it was an explanation of inserting keyframes. Today, after checking again, I found that Blender Grease Pencil seems to have a similar function (https://docs.blender.org/manual/en/latest/grease_pencil/animation/tools.html). However, after testing, it still adds a keyframe. The difference is that when used on a frame with an existing keyframe, it moves the subsequent keyframes back by one frame. Sometimes it doesn't work, but that's not important.
What's important is why the animation in pose mode doesn't have this keyframe editing function!!!?? It's so useful (tilts head).
這次要跟大家分享的是我大約花了約一個小時
跟ChatGPT來回溝通後得到的一個動畫功能插件
那就是可以很方便的在關鍵格之間加入或移除”空白格”
來看看效果
https://youtu.be/4FL3Wb2bpNk
其實我上網找了好幾次
一樣是有人問,但沒有答案,不然就是insert keyframe的說明
今天又查了一次,發現Blender Grease Pencil似乎有類似的功能
https://docs.blender.org/manual/en/latest/grease_pencil/animation/tools.html
但是測試了之後,是也是新增key frame,
差異是在已有keyframe的畫格上使用,會把後的keyframe 往後移一格。
但有時又試不出來
好這個不重要
重要的是
為什麼pose mode的 animation 沒有這種關鍵格編輯功能!!!???
明明就很好用啊(歪頭)
Tuesday, 21 November 2023
Using Namespace in Blender
I'm new to Blender, so feel free to leave comments if I make any mistakes.
Tuesday, 24 May 2022
Animation Exercise 02
Reference:
https://www.youtube.com/watch?v=tGh4AAz32vw
https://twitter.com/i/status/1523489023234166784
Working progress:
Key pose collecting: 30 mins
Reference:
Reference: https://www.youtube.com/watch?v=tGh4AAz32vw
Tuesday, 10 May 2022
Animation Exercise 01
It is time back to key-frame animation!
This animation took me 3 hours to finish it. If it was mocap data, I can probably clean it up within a half hour.
Rig: Mannequin + HIK
working time:
idle pose: 20 minskey pose: 50 minisspine: 50 minspolish: 60 mins
total: 3 hours
Check out their awesome motion!
Reference: https://twitter.com/i/status/1523636617872764928
Thursday, 21 April 2022
Python 命名規則
Python 在工作上幫了我很多,不斷的累積後,也進入了思考怎麼樣才是好的命名的階段
在參考了各方大大的分享文章,以及自己使用Maya及Motionbuilder的經驗
確實各家有不同的命名規範:
以下是我自己覺得適合的命名模組
雖然有些知識還有些模糊,但過一陣子再檢視看看,有什麼可以改進的
Krita python export png per layer
'''
@Jiapei Lu 2022
This tool is to export png per layer with baselayer, and make a folder for store all those exported pics.
It applys the name of the layer as a filename automatically.
Exported folder will be created under where the opened file is.
'''
from krita import *
import os
export_png_folder_name = 'export_png' # you can change the folder name here.
#Krita.instance().action('python_scripter').trigger()
doc = Krita.instance().activeDocument()#access to current file
doc_dir = os.path.dirname( doc.fileName( ))#get the file path
exportDir = os.path.join( doc_dir, export_png_folder_name)# building the path for exporting
#If folder doesn't exist then create the folder for export pics
if not os.path.isdir( exportDir):
os.makedirs( exportDir)
batchNodes = []#this for containing all the layer nodes
#First: Go over all layer turn off it's visible except basic layer.
for node in doc.topLevelNodes()[ 1:] :
node.setVisible( 0)
batchNodes.append( node )
#Second: Trun on the visible of the layers one by one then exporting it.
for node in batchNodes:
node.setVisible( 1)
doc.refreshProjection() #This is supper imported to refresh view. Otherwise the exported pic could be wrong.
info = InfoObject()# InfoObject is a dictionary with specific export options
info.setProperty( "alpha", True)
info.setProperty( "compression", 9)
info.setProperty( "forceSRGB", False)
info.setProperty( "indexed", False)
info.setProperty( "interlaced", False)
info.setProperty( "saveSRGBProfile", False)
info.setProperty( "transparencyFillcolor", [0,0,0])
path = os.path.join(exportDir, node.name() + ".png")
#node.save(path, doc.resolution(), doc.resolution(), info)
doc.setActiveNode( node)
doc.exportImage( path, info)
node.setVisible( 0)
doc.refreshProjection( )
Application.setBatchmode( False)
QMessageBox.information( Application.activeWindow().qwindow(), "Done and Done", "All done!")