在Unity中如何實現塗色的效果?

就是假如有一個模型,如何用Unity實現在遊戲中通過滑鼠和選定顏色來給它塗上顏色。 本人Unity小白一個,希望有大神指導。謝謝!


這裡解釋紋理繪畫( texture painting)的做法。

首先,需要有一個已展開(unwrapped) UV 的 Mesh,挷定一個材質,材質內有一動態紋理。

從 Camera.ScreenPointToRay() 生成滑鼠坐標的射線。

用 Physics.RayCast 投射射線至含 MeshCollider 的 GameObject。

若有碰撞,獲得碰撞點的 RaycastHit.textureCoord,然後在那個動態紋理上按紋理坐標繪畫筆刷。


Asset Store

我因為項目需求 想過這個解決方案 最後採用的解決是購買了paint3d的插件

其他的方案也採用過,和Milo Yip大大說的差不多,就是raycast之後 寫到貼圖的像素上去,不過網上的範例找到的多是基於guitexture,比較難適配各種解析度和寬高比,

我差不多買過所有的畫筆插件,鑒定下paint3d是最好的

項目親測

最早的時候畫筆會有線段感,和作者反應後,加入了subpaint的方式,增加了平滑度,當然大小顏色筆觸都是不在話下的


需要理解以下幾個概念:

1:動態紋理 rendertexture

2:用於繪製的 一張小圓點 紋理

3:選中物體位置的紋理坐標

4:選中物體位置的 Mesh 以及 object 坐標

選中物體 以及紋理坐標的獲得 物理引擎已經做了;

分配rendertexture調用unity介面;

渲染一個圓點到 rendertexture需要調用unity的graphics api


我是題主。

首先還是感謝Milo Yip和康托耶夫兩位的指導。

我去看了Paint In 3D,不過25刀對我這樣的窮學生黨還是有點壓力的。

不過我發現了另一個東西叫RealTime Painting Asset Store

這是一個完整的案例,具體的細節我還沒太懂也就不強答,不過案例的作者寫了教程。

Texture Painting

教程的最後有這個案例的Demo,大家可以看一看。


請你先去實現這樣的一個模型,點選任意位置都可以給當前位置添加材質,換句話說模型的UV可以隨便更換,就像圖片的像素一樣,可以細分為無數個小的GamObject,如果這個都做不到就不要折騰了,Unity3D是一個遊戲引擎,你為什麼非要讓它做在3DMax或者Maya中類似「刷權重」這樣的功能呢,想清楚了再來提問!


那麼ue4里如何實現呢? @大釗 你知道不


射線,模型,uv,set,就行了。關於texture2D,http://m.blog.csdn.net/article/details?id=52635524


貼圖製作並不是unity3d的強項。要做到精確的像素繪製濾鏡處理以及歷史紀錄之類的美術需求還是推薦使用專業的美術工具,比如:photoshop painter 3dcoat


推薦閱讀:

紅色警戒 2 的完整故事是怎樣的?
如何評價鋼鐵雄心2 的"kaiserreich" mod?
怎麼評價teaching feeling這款galgame?
有沒有大神能介紹一下跑跑卡丁車車系發展史?

TAG:遊戲 | 遊戲開發 | 心理 | Unity遊戲引擎 |