Ⅰ 如何在adobe photoshop中給扁平化的插圖添加紋理
Photoshop 簡稱「PS」,是由Adobe Systems開發和發行的圖像處理軟體,其近百個編修與繪圖工具,可以有效地進行圖片編輯處理工作。以Photoshop cc2014軟體為例,給扁平化插圖添加紋理的方法是:
1、打開ps軟體,「文件--新建」100*100像素白色背景文件;
Ⅱ painter軟體中,為圖片增加紋理!
紋理選項是為選中的圖層非透明部分增加立體的紋理效果,基本使用方法:
1,選中圖像所在圖層(該圖層必須是有不透明的部分,否則無效果)
2,打開表面紋理工具,調整選項並確認(調節的部分可以根據個人需求)
如果既想增加一層類似紙紋的效果,又不想破壞原圖,請按以下操作:
1,新建一個圖層,用白色填充
2,打開表面紋理工具並確認(調節的部分可以根據個人需求)
3,將紋理圖層調整為「明度」,並適當降低該圖層的透明度至滿意為止。
如果你想增加其他的紋理效果就稍微復雜一些:
1,打開原圖與你所選的紋理圖,
2,選中紋理圖,全選(ctrl+A)並復制(Ctrl+C)
3,選中在你的圖片,選擇粘貼(Ctrl+V),
4,將紋理所在圖層類型由「默認」轉變為「明度」,調整圖層透明度到滿意為止
5,若紋理圖過小,選中紋理所在圖層,全選(Ctrl+A),選擇編輯選項卡下的「自由變形」(Ctrl+Alt+T),調整大小及位置覆蓋所需畫面即可。
6,如果只是對部分區域上紋理,可以用用橡皮工具擦掉該圖層不需要的部分。
Ⅲ Illustrator怎麼做紋理
1、打開Illustrator軟體,進入操作界面,如圖所示。
Ⅳ 什麼軟體能弄紋理
那要看你想要什麼紋理了,我覺得keyshot這種渲染可以弄。
Ⅳ 這種紋理用什麼工具可以做出來
防偽紋理不一定用軟體來實現。刻出來的章人工劃弄幾個線條或者小缺口,那樣比軟體來得更具唯一性
Ⅵ 燙紋理的工具叫什麼
沒什麼很多工具啊。
1.卷杠(有粗有細,越粗卷越大,越小卷越小)
2.墊在頭發和卷杠之間的布條。
3.葯水,一般是兩種,冷燙精和中和劑,有的牌子還多個催化劑。
Ⅶ 如何在photoshop里製作紋理
工具材料
電腦 ps軟體
1、首先下載安裝好ps軟體,如下圖所示,在主頁點擊左上角的「新建」選項。
Ⅷ 以下哪個工具在修復的時候可以創健紋理 A污點修復畫筆工月 B修復畫筆工具 C修
污點修復畫筆工具在修復的時候可以創健紋理.
Ⅸ 這種紋理效果怎麼用PS做出來
這個紋理是ps自帶的圖案,具體下:
(方便對比是不是一樣,我直接在你這圖上做的)
新建圖層,做了一小塊純色區域
完成效果(覺得紋理太大可以對圖層縮放),望採納
Ⅹ 如何使用CCRenderTexture來創建動態紋理
本文實踐自 Ray Wenderlich、Ali Hafizji 的文章《How To Create Dynamic Textures with CCRenderTexture in Cocos2D 2.X》,文中使用Cocos2D,我在這里使用Cocos2D-x 2.1.4進行學習和移植。在這篇文章,將會學習到如何創建實時紋理、如何用Gimp創建無縫拼接紋理、如何混合陰影和光照到紋理上以顯現逼真效果、如何創建條紋紋理、如何設置紋理重復等等。
步驟如下:
1.新建Cocos2d-win32工程,工程名為"TinySeal",勾選"Box2D"選項(後續文章會使用到),勾選"Simple Audio Engine in Cocos Denshion"選項;
2.打開HelloWorldScene.cpp文件,在添加如下方法:
CCSprite *HelloWorld::spriteWithColor(ccColor4F bgColor, float textureWidth, float textureHeight)
{
// 1: Create new CCRenderTexture
CCRenderTexture *rt = CCRenderTexture::create(textureWidth, textureHeight);
// 2: Call CCRenderTexture:begin
rt->beginWithClear(bgColor.r, bgColor.g, bgColor.b, bgColor.a);
// 3: Draw into the texture
// You'll add this later
// 4: Call CCRenderTexture:end
rt->end();
// 5: Create a new Sprite from the texture
return CCSprite::createWithTexture(rt->getSprite()->getTexture());
}
正如你所見,這5個步驟是用來創建動態紋理的,具體描述如下:
①.創建一個新的CCRenderTexture:指定所要創建紋理的寬度和高度。
②.調用CCRenderTexture的begin方法:設置OpenGL以便之後的任何圖形繪制都在CCRenderTexture上,而不是屏幕上。
③.繪制紋理:使用原始的OpenGL命令來繪制,或通過調用現有的Cocos2D對象的visit方法。
④.調用CCRenderTexture的end方法:渲染紋理,關閉繪制到紋理上。
⑤.以紋理創建一個新的精靈:以CCRenderTexture的getSprite()->getTexture()來創建一個新的精靈。
注意這里不是調用CCRenderTexture:begin方法,而是調用一個更方便的方法beginWithClear,可以在繪制之前,用特定的顏色來清除紋理。
3.接著打開HelloWorldScene.h文件,添加如下代碼:
private:
cocos2d::CCSprite *_background;
打開HelloWorldScene.cpp文件,在構造函數里添加如下代碼:
_background = NULL;
修改init函數為如下:
bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
bRet = true;
} while (0);
return bRet;
}
添加以下方法:
ccColor4F HelloWorld::randomBrightColor()
{
while (true)
{
float requiredBrightness = 192;
ccColor4B randomColor = ccc4(rand() % 255,
rand() % 255,
rand() % 255,
255);
if (randomColor.r > requiredBrightness ||
randomColor.g > requiredBrightness ||
randomColor.b > requiredBrightness)
{
return ccc4FFromccc4B(randomColor);
}
}
}
void HelloWorld::genBackground()
{
if (_background)
{
_background->removeFromParentAndCleanup(true);
}
ccColor4F bgColor = this->randomBrightColor();
_background = this->spriteWithColor(bgColor, 512, 512);
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
_background->setPosition(ccp(winSize.width / 2, winSize.height / 2));
this->addChild(_background, -1);
}
void HelloWorld::onEnter()
{
CCLayer::onEnter();
this->genBackground();
this->setTouchEnabled(true);
}
void HelloWorld::ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent)
{
this->genBackground();
}
randomBrightColor是一個輔助方法,用來創建隨機顏色。注意到這里是使用ccc4B,所以可以指定R/G/B/A值在0-255范圍內,並且確保至少其中之一大於192,這樣就不會得到較深的顏色。然後再將顏色轉換成ccc4F。genBackground方法調用spriteWithColor方法,然後把創建的精靈加到屏幕中央。onEnter方法調用genBackground,並且開啟觸摸,這樣觸摸屏幕就可以重新生成另一個隨機背景。編譯運行,每次運行程序或觸摸屏幕都會有不同顏色的背景
4.創建噪音紋理。用一些噪音來進行修飾,這樣會使得它們看起來像是有陰影和光照。可以編寫一些代碼生成動態噪音,但是使用一些預先做好的噪音,這將更容易,性能也更高,這也是這里所將要介紹的。一種簡單的方法來創建隨機噪音,是通過一個免費的圖像編輯程序,名為Gimp。在這里,可以下載已經製作好的圖片(下載),跳過這部分。也可以下載Gimp(下載,當前2.8.4版本),動手製作。啟動Gimp程序,菜單欄→「文件」→「新建」,創建一張512x512大小的圖像。菜單欄→「濾鏡」→「繪制」→「雲彩」→「純色噪音」,如果需要的話,可以在這里調整參數,然後點擊「確定」。將會使用這張圖片乘以紋理的顏色。因此,圖片中的白色部分,將使原來的顏色顯現出來,而黑色的部分,將使原來的顏色變得更暗。目前,圖片中有太多的黑色部分,這會影響到我們所需要的效果。所以要減少黑色部分的數量,菜單欄→「顏色」→「色階」,拖動「輸出色階」最左邊的滑塊到右邊一些,這里調整為160
噪音紋理需要製作成無縫拼接,這樣才能創建拼接完整的重復紋理。菜單欄→「濾鏡」→「映射」→「無縫處理」即可。最後保存文件,菜單欄→「文件」→「導出到」,名稱為Noise.png,保存到工程Resources文件夾下。
5.應用噪音紋理。把這張噪音圖片應用到用CCRenderTexture所創建的紋理上。在spriteWithColor函數裡面,第3步注釋後面添加如下代碼:
CCSprite *noise = CCSprite::create("Noise.png");
ccBlendFunc blendFunc = {GL_DST_COLOR, GL_ZERO};
noise->setBlendFunc(blendFunc);
noise->setPosition(ccp(textureWidth / 2, textureHeight / 2));
noise->visit();
這里用噪音紋理來創建精靈,將它放置在渲染紋理的中心,然後調用visit方法。這個visit方法就是一系列的OpenGL ES命令調用,來繪制紋理。ccBlendFunc的第一個常量(GL_DST_COLOR)指定如何乘以輸入/源(也就是噪音紋理)的顏色,第二個常量(GL_ZERO)指定如何乘以現有的/目標(也就是上面的純色紋理)的顏色。具體如下:
現有的顏色乘以GL_ZERO,意味著現有的顏色被清除掉。
噪音紋理的顏色乘以GL_DST_COLOR,而GL_DST_COLOR意味著現有的顏色,因此噪音紋理的顏色乘以現有的顏色。所以噪音中白色部分越多,那麼對應現有的顏色將會越明顯,而噪音中黑色部分越多,則對應現有的顏色越暗。
上述兩種顏色進行相加,由於第一種顏色為零,所以真正重要的是第二種顏色結果。
這些混合常量令人迷惑,幸運的是有一個免費的在線工具,可以可視化的看到這些混合常量搭配的效果。編譯運行,將可以看到紋理上的一些陰影效果
6.添加漸變到紋理上。為了使紋理看起來更好些,添加一個從上到下的漸變,紋理越往下越暗。雖然可以通過Gimp修改噪音文件達到效果,但也可以用代碼做到,這樣使得事情更加動態,而且容易修改。基本的想法是,在紋理之上繪制一個黑色矩形,它的頂部完全透明,而底部不透明,這將使得紋理頂部不變,而底部逐漸變暗下去。要做到這一點,需要用到一些OpenGL命令。在spriteWithColor函數裡面,創建噪音精靈之前,添加如下代碼:
this->setShaderProgram(CCShaderCache::sharedShaderCache()->programForKey(kCCShader_PositionColor));
CC_NODE_DRAW_SETUP();
// 3: Draw into the texture
float gradientAlpha = 0.7f;
CCPoint vertices[4];
ccColor4F colors[4];
int nVertices = 0;
vertices[nVertices] = CCPointMake(0, 0);
colors[nVertices++] = ccc4f(0, 0, 0, 0);
vertices[nVertices] = CCPointMake(textureWidth, 0);
colors[nVertices++] = ccc4f(0, 0, 0, 0);
vertices[nVertices] = CCPointMake(0, textureHeight);
colors[nVertices++] = ccc4f(0, 0, 0, gradientAlpha);
vertices[nVertices] = CCPointMake(textureWidth, textureHeight);
colors[nVertices++] = ccc4f(0, 0, 0, gradientAlpha);
ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position | kCCVertexAttribFlag_Color);
glVertexAttribPointer(kCCVertexAttrib_Position, 2, GL_FLOAT, GL_FALSE, 0, vertices);
glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_FLOAT, GL_FALSE, 0, colors);
glBlendFunc(CC_BLEND_SRC, CC_BLEND_DST);
glDrawArrays(GL_TRIANGLE_STRIP, 0, (GLsizei)nVertices);
繪制紋理時,左上角是(0,0)點,而不是Cocos2D中的左下角。因此,以上代碼首先定義了紋理的四個頂點,順序為左上、右上、左下、右下,還定義了每個點的顏色。以這樣的順序來繪制頂點,是因為將繪制兩個三角形來形成一個矩形,如下圖所示:
使用GL_TRIANGLE_STRIP來繪制這些三角形,這意味著,第一個三角形由頂點數組中的前三個頂點組成,其餘的三角形由前一個三角形的後兩個頂點和下一個頂點組成。因此,這里第一個三角形由V0、V1、V2組成,第二個三角形由V1、V2、V3組成。定義完頂點數組和顏色數組之後,傳遞頂點數組和kCCVertexAttrib_Position常量給glVertexAttribPointer,同樣傳遞顏色數組和kCCVertexAttrib_Color常量給glVertexAttribPointer。編譯運行,可以看到一個整齊的漸變紋理,如下圖所示:
7.創建條紋紋理。將以一種顏色(如藍色)著色紋理開始,然後繪制一些條紋(如綠色)斜穿過它,如下圖所示:
注意,因為條紋是斜向的,實際上要在紋理的邊界之外就開始繪制,並且在紋理的邊界之外繼續繪制一些條紋。另外還要注意,為了得到一個不錯的45度角,把V0偏移紋理的高度,這樣兩邊都是紋理高度,因此,可以得到一個45度角。添加一個新的方法,代碼如下:
CCSprite * HelloWorld::spriteWithColor1(ccColor4F c1, ccColor4F c2, float textureWidth, float textureHeight, int nStripes)
{
// 1: Create new CCRenderTexture
CCRenderTexture *rt = CCRenderTexture::create(textureWidth, textureHeight);
// 2: Call CCRenderTexture:begin
rt->beginWithClear(c1.r, c1.g, c1.b, c1.a);
// 3: Draw into the texture
this->setShaderProgram(CCShaderCache::sharedShaderCache()->programForKey(kCCShader_PositionColor));
CC_NODE_DRAW_SETUP();
// Layer 1: Stripes
CCPoint *vertices = new CCPoint[nStripes * 6];
ccColor4F *colors = new ccColor4F[nStripes * 6];
int nVertices = 0;
float x1 = -textureHeight;
float x2;
float y1 = textureHeight;
float y2 = 0;
float dx = textureWidth / nStripes * 2;
float stripeWidth = dx / 2;
for (int i = 0; i < nStripes; ++i)
{
x2 = x1 + textureHeight;
vertices[nVertices] = ccp(x1, y1);
colors[nVertices++] = ccc4f(c2.r, c2.g, c2.b, c2.a);
vertices[nVertices] = ccp(x1 + stripeWidth, y1);
colors[nVertices++] = ccc4f(c2.r, c2.g, c2.b, c2.a);
vertices[nVertices] = ccp(x2, y2);
colors[nVertices++] = ccc4f(c2.r, c2.g, c2.b, c2.a);
vertices[nVertices] = vertices[nVertices - 2];
colors[nVertices++] = ccc4f(c2.r, c2.g, c2.b, c2.a);
vertices[nVertices] = vertices[nVertices - 2];
colors[nVertices++] = ccc4f(c2.r, c2.g, c2.b, c2.a);
vertices[nVertices] = ccp(x2 + stripeWidth, y2);
colors[nVertices++] = ccc4f(c2.r, c2.g, c2.b, c2.a);
x1 += dx;
}
ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position | kCCVertexAttribFlag_Color);
glVertexAttribPointer(kCCVertexAttrib_Position, 2, GL_FLOAT, GL_FALSE, 0, vertices);
glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_FLOAT, GL_TRUE, 0, colors);
glDrawArrays(GL_TRIANGLES, 0, (GLsizei)nVertices);
CC_SAFE_DELETE_ARRAY(vertices);
CC_SAFE_DELETE_ARRAY(colors);
// Layer 4: Noise
CCSprite *noise = CCSprite::create("Noise.png");
ccBlendFunc blendFunc = {GL_DST_COLOR, GL_ZERO};
noise->setBlendFunc(blendFunc);
noise->setPosition(ccp(textureWidth / 2, textureHeight / 2));
noise->visit();
// 4: Call CCRenderTexture:end
rt->end();
// 5: Create a new Sprite from the texture
return CCSprite::createWithTexture(rt->getSprite()->getTexture());
}
這個方法的大部分內容是回顧如何創建一個CCRenderTexture,但是創建條紋層的代碼是新的,這部分代碼,它首先創建了頂點數組和顏色數組,對於每個條紋,需要6個頂點,即3個頂點乘以2個三角形。不能使用GL_TRIANGLE_STRIP,因為條紋不相鄰。顏色數組存儲三角形的每個頂點顏色值。第一個頂點位於(-textureHeight, textureHeight),正如上圖所看到的。下一個頂點位於(-textureHeight+stripWidth, textureHeight),第三個頂點位於(0, 0),而第四個頂點位於(stripeWidth,0)。這些是一個條紋所需要的頂點,每次往前遞增條紋的兩倍寬度,並且持續這樣直到所有條紋完成。修改genBackground函數為如下:
void HelloWorld::genBackground()
{
if (_background)
{
_background->removeFromParentAndCleanup(true);
}
ccColor4F bgColor = this->randomBrightColor();
ccColor4F color2 = this->randomBrightColor();
//_background = this->spriteWithColor(bgColor, 512, 512);
int nStripes = ((rand() % 4) + 1) * 2;
_background = this->spriteWithColor1(bgColor, color2, 512, 512, nStripes);
this->setScale(0.5f);
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
_background->setPosition(ccp(winSize.width / 2, winSize.height / 2));
this->addChild(_background);
}
這里調用新的方法,並且還設置了層的縮放為0.5,使其更容易地看到整個紋理。編譯運行,每當觸摸屏幕都可以看到隨機生成的條紋紋理