国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

國外著名購物網(wǎng)站排名關鍵詞排名零芯互聯(lián)排名

國外著名購物網(wǎng)站排名,關鍵詞排名零芯互聯(lián)排名,企業(yè)網(wǎng)站定制開發(fā),ps做網(wǎng)站效果圖都是按幾倍做文章目錄 目的Blend Shape 逐頂點 多個混合思路Blender3Ds maxUnity 中使用Project 目的 拾遺,備份 Blend Shape 逐頂點 多個混合思路 blend shape 基于: vertex number, vertex sn 相同,才能正?;旌?、播放 也就是 vertex buffer 的頂點數(shù)…

文章目錄

  • 目的
  • Blend Shape 逐頂點 多個混合思路
  • Blender
  • 3Ds max
  • Unity 中使用
  • Project


目的

拾遺,備份


Blend Shape 逐頂點 多個混合思路

blend shape 基于: vertex number, vertex sn 相同,才能正?;旌?、播放
也就是 vertex buffer 的頂點數(shù)量一樣,還有 triangles 的 index 要一致

這樣 blend shape 才能逐個頂點計算

計算公式:使用一張大佬整理的圖,大佬的文章:BlendShapes基礎與拓展練習(面捕與物體變形)
在這里插入圖片描述


Blender

Shift+A 新建一個 sphere
在這里插入圖片描述

選中

在這里插入圖片描述

Tab 進入 Editor Mode,并且在 Data 頁簽屬性的 Shape Keys 添加對應的 blend shape 狀態(tài)
在這里插入圖片描述
在這里插入圖片描述

調整好每一個 Shape Keys (或是叫:blend shape) 的頂點位置
然后再 Object Mode 下,我們可以選中對應的 Shape Keys 然后調整 value 查看變形結果
請?zhí)砑訄D片描述

最終我們嘗試 K幀動畫來查看 多個 shape keys 混合控制的情況
請?zhí)砑訄D片描述


3Ds max

interlude _1 : working on Yui-chan’s face morphing. - 3Ds max 中的演示 二次元 臉部表情 FFD


Unity 中使用

先在 blender 導出 fbx
在這里插入圖片描述

將 fbx 模型拖拽到 hierarchy
在這里插入圖片描述

嘗試拖拉 inspector 中的 blend shape 拉桿,即可查看效果
請?zhí)砑訄D片描述

所以我們寫腳本控制 blend shape 混合拉桿即可達到我們各種表情的混合控制
請?zhí)砑訄D片描述

在原來 blendshape_1 基礎上在混合 blendshape_2
請?zhí)砑訄D片描述

blendshape_1 和 blendshape_2 一起播放
請?zhí)砑訄D片描述

然后可以嘗試看一下 blendshape_1 和 blendshape_2 不同速率的控制混合的情況
這里使用 pingpong 算法

請?zhí)砑訄D片描述

下面是測試 csharp 腳本

// jave.lin 2023/10/07 測試 blend shapeusing System.Collections;
using UnityEngine;public class TestingBlendShape : MonoBehaviour
{public SkinnedMeshRenderer skinnedMeshRenderer;private int _BlendShape_1_IDX = -1;private int _BlendShape_2_IDX = -1;private IEnumerator _couroutine_blendShape1;private IEnumerator _couroutine_blendShape2;private IEnumerator _couroutine_pingpong;private void OnDestroy(){StopAllCoroutines();}private void Refresh(){if (skinnedMeshRenderer != null){_BlendShape_1_IDX = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("BlendShape_1");_BlendShape_2_IDX = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex("BlendShape_2");}}public void ToBlendShape_1(){Refresh();if (_couroutine_blendShape1 != null){StopCoroutine(_couroutine_blendShape1);}StartCoroutine(_couroutine_blendShape1 = Play_ToBlendShape(_BlendShape_1_IDX, 100.0f));}public void ToBlendShape_2(){Refresh();if (_couroutine_blendShape2 != null){StopCoroutine(_couroutine_blendShape2);}StartCoroutine(_couroutine_blendShape2 = Play_ToBlendShape(_BlendShape_2_IDX, 100.0f));}public void ToBlendShape_1_2(){Refresh();if (_couroutine_blendShape1 != null){StopCoroutine(_couroutine_blendShape1);}StartCoroutine(_couroutine_blendShape1 = Play_ToBlendShape(_BlendShape_1_IDX, 100.0f));if (_couroutine_blendShape2 != null){StopCoroutine(_couroutine_blendShape2);}StartCoroutine(_couroutine_blendShape2 = Play_ToBlendShape(_BlendShape_2_IDX, 100.0f));}public void ToPingPong_BlendShape_1_2(){Refresh();if (_couroutine_pingpong != null){StopCoroutine(_couroutine_pingpong);}StartCoroutine(_couroutine_pingpong = PingPong_BlendShape());}public void StopAll(){StopAllCoroutines();}public void ResetAll(){if (skinnedMeshRenderer != null){var count = skinnedMeshRenderer.sharedMesh.blendShapeCount;for (int i = 0; i < count; i++){skinnedMeshRenderer.SetBlendShapeWeight(i, 0.0f);}}}private IEnumerator Play_ToBlendShape(int idx, float to_val){to_val = Mathf.Clamp(to_val, 0.0f, 100.0f);var start_val = skinnedMeshRenderer.GetBlendShapeWeight(idx);var cur_val = start_val;while (cur_val < to_val){cur_val = Mathf.MoveTowards(cur_val, to_val, (to_val - start_val) * Time.deltaTime);skinnedMeshRenderer.SetBlendShapeWeight(idx, cur_val);yield return null;}Debug.Log($"play to blend shape [{idx}] : [{to_val}] complete!");}private IEnumerator PingPong_BlendShape(){var now_time = Time.time;while (true){var _time = Time.time - now_time;var weight1 = Mathf.PingPong(_time * 200f, 100f);var weight2 = Mathf.PingPong(_time * 50f, 100f);skinnedMeshRenderer.SetBlendShapeWeight(_BlendShape_1_IDX, weight1);skinnedMeshRenderer.SetBlendShapeWeight(_BlendShape_2_IDX, weight2);yield return null;}}
}

Project

個人備份用

  • blender 工程: TestingBlenderShapeKeys.blend
  • unity 工程: TestingBlendShape_BRP_2020.3.37f1.rar

  • 百人計劃-BlendShapes基礎(物體變形與面捕應用)
  • google : how to implementing the blend shape in blender
  • google : how to create shape keys animation in blender
    • Shape Key / Blendshape Hacks to easily create expressions and actions for your avatar
    • Blender 2.8 Shapekeys and Morphing
    • How to Add Shape Keys in Blender
  • 形態(tài)鍵
  • 在Unity中實現(xiàn)BlendShape表情和骨骼動畫混合的實踐 - 講得挺不錯
  • BlendShapes基礎與拓展練習(面捕與物體變形) - 講得挺不錯
  • GDC2011: Fast and Efficient Facial Rigging
  • GDC jeremy_ernst_fastandefficietfacialrigging.pdf
  • 技術美術百人計劃-美術 3.5 BlendShape基礎 筆記
  • 3.5 BlendShapes基礎
  • 百人計劃-BlendShapes基礎(物體變形與面捕應用)
  • 【技術美術百人計劃】美術 3.5 BlendShape基礎
  • Unity通過導入器優(yōu)化動畫關鍵幀數(shù)據(jù) - 刪除僅僅只有 blend shape 的動畫的其他骨骼信息,優(yōu)化性能
  • interlude _1 : working on Yui-chan’s face morphing. - 3Ds max 中的演示 二次元 臉部表情 FFD
http://aloenet.com.cn/news/46435.html

相關文章:

  • 做企業(yè)門戶網(wǎng)站都南寧網(wǎng)站快速排名提升
  • 重慶大渡口網(wǎng)站建設解決方案正規(guī)seo大概多少錢
  • 公司簡介模板300字安陽seo
  • 西安 網(wǎng)站建設 培訓學校搜索引擎哪個好
  • 網(wǎng)站建設高校關鍵詞排名優(yōu)化公司推薦
  • 觸摸屏html網(wǎng)站蘇州seo網(wǎng)站推廣哪家好
  • 玉溪做網(wǎng)站的公司網(wǎng)上銷售方法
  • 做門的網(wǎng)站建設百度競價推廣是什么工作
  • 東莞手機網(wǎng)站價格表重慶專業(yè)seo
  • 用織夢系統(tǒng)怎么做網(wǎng)站品牌策略包括哪些內(nèi)容
  • 傳奇網(wǎng)站劫持怎么做百度廣告平臺
  • 北京天津網(wǎng)站建設哪家公司好愛站網(wǎng)站排名查詢工具
  • wordpress 編輯器 國外seo策略有哪些
  • 網(wǎng)站建設批發(fā)中國營銷策劃第一人
  • 建網(wǎng)站 陜西牛人網(wǎng)絡科技百度推廣的定義
  • 網(wǎng)站建設需求分析報告手機優(yōu)化管家
  • 深圳專業(yè)做網(wǎng)站排名哪家好別人惡意點擊我們競價網(wǎng)站
  • vs做網(wǎng)站開發(fā)嗎關鍵洞察力
  • 刪除wordpress標志鶴崗網(wǎng)站seo
  • 手機網(wǎng)站建設設計6灰色seo推廣
  • dede模板網(wǎng)站如何搭建做個網(wǎng)站
  • 做心悅騰龍光環(huán)的網(wǎng)站是什么全網(wǎng)熱搜榜第一名
  • 汕頭高端網(wǎng)站建設方法快速網(wǎng)站排名提升工具
  • 保定工程建設信息網(wǎng)站最新的疫情防控政策和管理措施
  • 學生做網(wǎng)站軟件自己怎么做引流推廣
  • 牛商網(wǎng)做網(wǎng)站多少錢做一個企業(yè)網(wǎng)站需要多少錢
  • 一元云購網(wǎng)站開發(fā)國家職業(yè)技能培訓官網(wǎng)
  • 手機端網(wǎng)站推廣營銷管理
  • 游戲交易網(wǎng)站怎么做石獅seo
  • 鄭州整形網(wǎng)站建設上海谷歌seo公司