1. 程式人生 > >基於模型形狀修改後輸出的displacement與原模型匹配的問題

基於模型形狀修改後輸出的displacement與原模型匹配的問題

背景

CG製作流程上總會遇到怪事發生,解決問題這些問題不僅需要豐富的知識。有時還需要一些小技巧。
一般模型做完以後,都交由繫結去弄,然後就開始做動畫。而接下來事情發生在動畫已經完成了,模型才開始輸出置換貼圖。不知道模型的製作環節哪裡出現了岔子,模型在做置換貼圖的時候,把原始的模型形狀進行調整了。那麼輸出的置換貼圖就不能跟原始的模型吻合了。如下圖:

這裡寫圖片描述
圖1 繫結用的模型形狀

這裡寫圖片描述
圖2 模型輸出置換貼圖的模型形狀

這裡寫圖片描述
圖3 模型正確貼上置換貼圖的效果

這裡寫圖片描述
圖4 動畫模型貼上置換貼圖的效果

分析

由上圖可以看出,那幾塊腹肌位置發生了變化。但是現實是,我們不可能讓繫結把模型形狀的修改應用到繫結檔案中。這樣有很多不確定因素,比如說會有大量的 blendShape 需要調整,而且不知道這些 blendShape 的調整是否會影響到動畫。在綜合各方面的考量以後,我覺得最靠譜的方法就是把新模型的 displacement 座標轉移到舊模型上。

實現方法

在 houdini 裡完成這個功能實在是分分秒秒的事情,由此只能感嘆 houdini 太特麼強大了。首先判斷 displacement 是什麼型別的。如果是 vector 型的則是最簡單的,只需要在原資料的基礎上加上點位置的偏移。而如果是 float 型的資料,則需要計算 displace along normal 的數值,就需要多匯入一個新模型的 N 的引數。

總結

還好這次遇到的問題是非常簡單的,實現起來幾乎沒有任何難度。主要的問題在於蛋疼的 ar for maya,渲染 vector displacement 的時候重新整理資料機制有問題。我把所有的屬性都調了一遍,才看到了最終效果。這個彎路走得有點狠,花了幾分鐘做出的東西,用了幾個小時來除錯。