Thursday, 21 April 2022

Python 命名規則

 Python 在工作上幫了我很多,不斷的累積後,也進入了思考怎麼樣才是好的命名的階段

在參考了各方大大的分享文章,以及自己使用Maya及Motionbuilder的經驗

確實各家有不同的命名規範:

以下是我自己覺得適合的命名模組

雖然有些知識還有些模糊,但過一陣子再檢視看看,有什麼可以改進的











Krita python export png per layer

 

寫這個工具是因為專案上有需要批次輸出圖層檔案
因為Krita 免費,又可以用Python撰寫
花了一些時間找了一些教學
總總約花了半天,寫出這樣的工具。

執行位置: 工具>指令稿>指令稿工具






基本用途:
依開始的圖檔位置,自動建立一個存放輸出圖片的資料夾,並依圖層名層為檔案名稱。
目前每處理一個圖層都要按一次確定,因為管方文件好像有問題無法使用,所以也不確定要如何解決,但比起要手動一張一張輸出圖片,還是要方便跟輕鬆多了吧。

Python code: 下載位置

 '''  
 @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!")  

2022 Animation Demo

 

Porject: 《Marvel's Avengers Game》
Response for : 
    Kate/ Black Panther Gameplay Animations.
    Clean-up Character Body Mocap Aniamtions.
    Building up the animation tool.
    Tranning Animators to meeting the AAA Game Quality.

https://vimeo.com/697820338

JiapeiShowcase_2022.mp4 from Jiapei Lu on Vimeo.



Python2.X json.load() unicode utf-8 Issue ( Sloved )

 

發生問題:

在mobu 2020利用os 連接路徑報錯,發現以Json.load()的字典格式,為unicode

而mobu無法辨識,需先將用到字串利用string.encode('utf-8')

才能使用

後來想想覺得應是在open()時,就可以先轉換,就不用對個案一個一個轉換

在網路查了相關的關鍵字"python2.x,  json.load, dict, unicode, utf-8, open"

試了多個覺得可行的方式

像是open加入encoding

或是json.dump()加入encoding

import io

都沒什麼用

最後找到這個解最簡單,原網址https://www.jianshu.com/p/90ecc5987a18


Python2.x Code Sample:

 def Read_Dict_Data( Dict_Data ):  
   import json  
   def byteify(input, encoding='utf-8'):  
     if isinstance(input, dict):  
       return {byteify(key): byteify(value) for key, value in input.iteritems()}  
     elif isinstance(input, list):  
       return [byteify(element) for element in input]  
     elif isinstance(input, unicode):  
       return input.encode(encoding)  
     else:  
       return input  
   with open ( Dict_Data )as f:  
     data = json.load(f, encoding = 'UTF-8')# it is useless adding encoding when use json.load()  
     return byteify(data)  

如果是Python3就沒有以上問題

多數網頁都沒清楚的說明python2與3的差別,所以記錄一下

Thursday, 23 December 2021

MotionBuilder T pose Script

Tpose Tool Story:

Do you fell it is annoyed to pose a t-pose when do HIK setup? If you do, Try this tool which can rotate selected bones to vertical or horizontal angle depending on its origal angle.

You can download the tool from HERE

Demo Video


工具介紹

如果你跟我一樣在設定Tpose時,覺得手動調很煩,可以試試這個小工具

選擇要水平或垂直的骨骼,執行工具,就會自動判定接近的角度。

以影片的角色為例,因為上手臂較接近垂直線,所以先手動調整到接近水平後

再執行工具,就可以快速得到對的角度!


Thursday, 4 November 2021

Maya 2022 Python 2to3 無痛轉移

 Maya 2022 已改用python3 很多工具都需要轉換

找了幾個方案
Python 2to3 無痛轉移 https://www.pythonf.cn/read/38276
重點
2. 在2to3.py的文件資料下,shift+右鍵打開命令視窗
通常位置"C:\Python27\Tools\Scripts"
3. 在命令視窗輸入指令轉換
- 轉換並覆寫檔案,保留.bak的備份
python 2to3.py -w D:\test.py
- 轉換並覆寫檔案不備份
python 2to3.py -w -n D:\test.py
- 批量轉換
python 2to3.py D:\
已知手動修改部分
reload在python3要另呼叫載入
from imp import reload

Thursday, 20 August 2020

Maya : Vertex match tool

This tool is for matching vertex position and normal from Act vertex to Ref vertex.

It needs numpy. 
To install numpy, navigate to maya app directory (which looks like “C:\Program Files\Autodesk\Maya2023\bin”)

inside folder shift and right click mouse. choose open power shell cmd prompt, type 

mayapy.exe -m pip install ‐‐user numpy

or

.\mayapy.exe -m pip install ‐‐user numpy

Click Download 

Usage: 

import vtxMatch

from importlib import reload

reload(vtxMatch)