2022年12月8日 星期四

PolyQuilt Smooth 工具錯誤解法

到C槽使用者

AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\PolyQuilt\subtools\subtool_brush_relax.py

並將第 93 行 

bpy.ops.view3d.select_circle( x = coord.x , y = coord.y , radius = radius , wait_for_input=False, mode='SET' )

更改為

bpy.ops.view3d.select_circle( x = int(coord.x), y = int(coord.y) , radius = int(radius) , wait_for_input=False, mode='SET' )

並重新啟動攪拌機。

原來色收差調小可以變舊

 




胸大肌綁骨




介紹

我想解決一個我一直遇到的問題:抬起手臂時肩膀的運動看起來很糟糕。在一些幫助下,我找到了一種方法,可以讓我自己的角色獲得更好的肩膀和胸部運動,我想與大家分享。

可以在底部找到示例 .blend 文件。

首先我想展示一種之前(左)和之後(右)的例子。



新方法的小動畫:https ://twitter.com/lewdineer/status/1494435128394854403

最好的奶子碰撞參數

 


設置布模擬


2022年11月14日 星期一

【Windows】7-Zip 解壓遇到亂碼時的解法


載了一個簡中的小黃油,但用7-zip解壓縮來後
有些路徑、檔名卻是亂碼,倒致遊戲沒辦法正常開啟。






用7-zip 解壓縮完變成這樣,出現的字沒有一個會念
殼蹺呇 ㄎㄜˊ ㄑ一ㄠ ㄑ一ˊ (by google翻譯)
並且因為資料夾變成奇怪的名字,底下路徑都跑掉







找不到檔案,導致遊戲無法開啟







查了一下原因,才發現製作者在壓縮檔案時,電腦的編碼設定跟我們解壓縮時的設定不同,也不是用Unicode,而造成語言不同出現亂碼的情形。



下載其他解壓縮工具 (如 bandizip) 可以解決問題,解壓縮檔案時可以選擇編碼。
但我不想再下載其他解壓縮工具(因為會讓右鍵的設定冒出更多選項)



用7-zip解決方式

首先搜尋 7-zip,開啟檔案位置







找到一個捷徑,

對 7-Zip File Manager 這個捷徑按右鍵 -> 內容





開啟檔案位置












就會來到 C:\Program Files\7-Zip 當初安裝7-zip的預設位置






把 7zG.exe 這個檔案 複製 到桌面,再把要解壓縮的檔案也拉到桌面


打開CMD 輸入

> cd Desktop


移動到桌面


> 7zG.exe x 催眠师.zip -mcp=932


參數
x 代表解壓縮
催眠師.zip 檔名
-mcp=936 指定編碼為日文


簡中 936
日文 932
(參照對照表)












就能成功解壓,這次就沒有亂碼了,可以開心玩小黃油!



2022年10月18日 星期二

在blender中使用 EXR 為畫面分層



注意不需要在Blender中安装,只需要把‘Exr_auto-pass_saver.py’文件
放到你指定的blender版本号插件文件夹中即可 




插件使用
先在blender窗口左上角,打开‘合成器’界面,并启动‘使用节点’









具体使用官网上有一个很详尽的GIF









2022年10月17日 星期一

Blender將粒子系統轉換為動畫網格(py腳本)

import bpy

# Set these to False if you don't want to key that property.
KEYFRAME_LOCATION = True
KEYFRAME_ROTATION = True
KEYFRAME_SCALE = True
KEYFRAME_VISIBILITY = False  # Viewport and render visibility.
KEYFRAME_VISIBILITY_SCALE = True


def create_objects_for_particles(ps, obj):
    # Duplicate the given object for every particle and return the duplicates.
    # Use instances instead of full copies.
    obj_list = []
    mesh = obj.data
    particles_coll = bpy.data.collections.new(name="particles")
    bpy.context.scene.collection.children.link(particles_coll)

    for i, _ in enumerate(ps.particles):
        dupli = bpy.data.objects.new(
                    name="particle.{:03d}".format(i),
                    object_data=mesh)
        particles_coll.objects.link(dupli)
        obj_list.append(dupli)
    return obj_list

def match_and_keyframe_objects(ps, obj_list, start_frame, end_frame):
    # Match and keyframe the objects to the particles for every frame in the
    # given range.
    for frame in range(start_frame, end_frame + 1):
        print("frame {} processed".format(frame))
        bpy.context.scene.frame_set(frame)
        for p, obj in zip(ps.particles, obj_list):
            match_object_to_particle(p, obj)
            keyframe_obj(obj)

def match_object_to_particle(p, obj):
    # Match the location, rotation, scale and visibility of the object to
    # the particle.
    loc = p.location
    rot = p.rotation
    size = p.size
    if p.alive_state == 'ALIVE':
        vis = True
    else:
        vis = False
    obj.location = loc
    # Set rotation mode to quaternion to match particle rotation.
    obj.rotation_mode = 'QUATERNION'
    obj.rotation_quaternion = rot
    if KEYFRAME_VISIBILITY_SCALE:
        if vis:
            obj.scale = (size, size, size)
        if not vis:
            obj.scale = (0.001, 0.001, 0.001)
    obj.hide_viewport = not(vis) # <<<-- this was called "hide" in <= 2.79
    obj.hide_render = not(vis)

def keyframe_obj(obj):
    # Keyframe location, rotation, scale and visibility if specified.
    if KEYFRAME_LOCATION:
        obj.keyframe_insert("location")
    if KEYFRAME_ROTATION:
        obj.keyframe_insert("rotation_quaternion")
    if KEYFRAME_SCALE:
        obj.keyframe_insert("scale")
    if KEYFRAME_VISIBILITY:
        obj.keyframe_insert("hide_viewport") # <<<-- this was called "hide" in <= 2.79
        obj.keyframe_insert("hide_render")


def main():
    #in 2.8 you need to evaluate the Dependency graph in order to get data from animation, modifiers, etc
    depsgraph = bpy.context.evaluated_depsgraph_get()

    # Assume only 2 objects are selected.
    # The active object should be the one with the particle system.
    ps_obj = bpy.context.object
    ps_obj_evaluated = depsgraph.objects[ ps_obj.name ]
    obj = [obj for obj in bpy.context.selected_objects if obj != ps_obj][0]
    
    for psy in ps_obj_evaluated.particle_systems:         
        ps = psy  # Assume only 1 particle system is present.
        start_frame = bpy.context.scene.frame_start
        end_frame = bpy.context.scene.frame_end
        obj_list = create_objects_for_particles(ps, obj)
        match_and_keyframe_objects(ps, obj_list, start_frame, end_frame)

if __name__ == '__main__':
    main()



https://www.youtube.com/watch?v=AhsZ5Ykm63c
記得先烘焙、然後選物體再選發射器再執行腳本
 
如需旋轉可以用約束 ,初始後

https://blender.stackexchange.com/questions/4956/convert-particle-system-to-animated-meshes?answertab=active#tab-top

2022年7月20日 星期三

Google Pixel Buds A-Series

 


我的上一顆耳機是在中國教動畫時順便買的小米,幾個月前給了我姊。
之後有事沒事就會逛下網拍,知道了這款。


無主動降躁但是質感不錯,價錢我購買是1520NTD
用起來滿方便的,也沒有小米那種調一階就太大聲,降一階又太小聲的問題。