SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
Cocos2d-x - Tips
株式会社シュハリ!
代表取締役 松浦 晃洋
自己紹介
• 松浦 晃洋!
• 株式会社シュハリ 代表取締役!
• Cocos2d-x 開発のレシピ執筆!
• 専門学校 Cocos2d-x 講師
• @syuhari!
• facebook.com/syuhari
• お絵描き Physics
• Soft Physics
• 法線マップ
Tips
お絵描き Physics
https://github.com/syuhari/Freehand
指で描いている最中
(CCTouchMoved)
指で描くのが終了
(CCTouchEnded)
物理オブジェクトの塊に
テクスチャを貼り付ける
処理概要
Soft Physics
https://github.com/syuhari/SoftPhysics
http://www.uchidacoonga.com/2012/03/soft-body-physics-with-box2d-and-cocos2d-part-14/
• 中心となるオブジェクトを一つ作成
• その周りにオブジェクトをジョイントする
• 一塊のオブジェクトにテクスチャをマッピングする
物理オブジェクトの構造
// テクスチャを作成
texture =
CCTextureCache::sharedTextureCache()->addImage("texture.png");
!
kmGLPushMatrix();
ccGLBindTexture2D(texture->getName());
texture->getShaderProgram()->use();
texture->getShaderProgram()->setUniformsForBuiltins();
ccGLEnableVertexAttribs(
kCCVertexAttribFlag_Position|kCCVertexAttribFlag_TexCoords);
!
glVertexAttribPointer(
1, 2, GL_FLOAT, GL_FALSE, 0, triangleFanPos);
glVertexAttribPointer(
2, 2, GL_FLOAT, GL_FALSE, 0, textCoords);
glDrawArrays(GL_TRIANGLE_FAN, 0, NUM_SEGMENTS+2);
!
kmGLPopMatrix();
テクスチャのマッピング
法線マップ
https://github.com/syuhari/Freehand
法線ベクトル
3次元ではある面に垂直なベクトル
法線マップ
• 通常の画像は各ドットが RGB
• 法線マップは RGB の部分が XYZ に相当
• 各ドットがどの方向を向いているか分かる
#ifdef GL_ES
precision mediump float;
#endif
!
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform sampler2D u_normalMapTexture;
uniform vec3 u_lightNormal;
!
void main()
{
!
vec4 normalMap = texture2D( u_normalMapTexture, v_texCoord );
normalMap.xyz = normalMap.xyz - 0.5;
gl_FragColor = texture2D( u_texture, v_texCoord );
vec3 ret =
gl_FragColor.rgb * max( 0.1, dot( normalMap.rgb, u_lightNormal ) )*3.0;
gl_FragColor.rgb = ret.rgb;
}
フラグメントシェーダー (GLSL)
int len = 0;
const GLchar * fragmentSource =
(GLchar*)CCFileUtils::sharedFileUtils()
->getFileData("MapShader.fsh", "rb", (unsigned long*)(&len));
!
shader = new CCGLProgram();
setShaderProgram(shader);
shader->initWithVertexShaderByteArray(
ccPositionTextureA8Color_vert, fragmentSource);
!
shader->addAttribute(
kCCAttributeNamePosition, kCCVertexAttrib_Position);
shader->addAttribute(
kCCAttributeNameTexCoord, kCCVertexAttrib_TexCoords);
!
shader->link();
shader->updateUniforms();
フラグメントシェーダーをリンクする
// ファイル名に「_n」を付けたリソースを法線マップとして読込む
std::string map = baseName + "_n.png";
colorRampTexture =
CCTextureCache::sharedTextureCache()->addImage(map.c_str());
colorRampTexture->setAliasTexParameters();
this->shader->use();
glActiveTexture(GL_TEXTURE1+tex);
glBindTexture(GL_TEXTURE_2D, colorRampTexture->getName());
glActiveTexture(GL_TEXTURE0);
法線マップを読み込む
float xx, yy, zz, length;
!
//シェーダー使用を宣言
this->shader->use();
// 光源までの距離
CCSize size = CCDirector::sharedDirector()->getWinSize();
xx = (this->getLight().x - this->getPositionX()) / size.width;
yy = (this->getLight().y - this->getPositionY()) / size.height;
!
length = sqrtf( xx * xx + yy * yy );
zz = 1-length;
length = sqrtf( zz * zz + xx * xx + yy * yy );
zz = zz / length;
xx = xx / length;
yy = yy / length;
//シェーダープログラムに光源の位置をセット
glUniform3f(lightNormalUniformLocation, xx, yy, zz);
法線マップを読み込む
エンジニア募集中!
• @syuhari!
• facebook.com/syuhari

Mais conteúdo relacionado

Semelhante a Cocos2dx Tips - Box2d, Normal mapping

cocos2d-xとCocosBuilder
cocos2d-xとCocosBuildercocos2d-xとCocosBuilder
cocos2d-xとCocosBuilderTomoaki Shimizu
 
cocos2d-xハンズオン勉強会 in 名古屋
cocos2d-xハンズオン勉強会 in 名古屋cocos2d-xハンズオン勉強会 in 名古屋
cocos2d-xハンズオン勉強会 in 名古屋Tomoaki Shimizu
 
CocosBuilderとcocos2d-x JSB
CocosBuilderとcocos2d-x JSBCocosBuilderとcocos2d-x JSB
CocosBuilderとcocos2d-x JSBTomoaki Shimizu
 
Cocos2d-xを用いたゲームアプリ「めちゃギントン」開発の裏側
Cocos2d-xを用いたゲームアプリ「めちゃギントン」開発の裏側Cocos2d-xを用いたゲームアプリ「めちゃギントン」開発の裏側
Cocos2d-xを用いたゲームアプリ「めちゃギントン」開発の裏側Akihiro Matsuura
 
かんたんなcocos2d-xの紹介
かんたんなcocos2d-xの紹介かんたんなcocos2d-xの紹介
かんたんなcocos2d-xの紹介Tomoaki Shimizu
 
Cocos2d-x ver.3 開発の効率化
Cocos2d-x ver.3 開発の効率化Cocos2d-x ver.3 開発の効率化
Cocos2d-x ver.3 開発の効率化Akihiro Matsuura
 
Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島Tomoaki Shimizu
 

Semelhante a Cocos2dx Tips - Box2d, Normal mapping (8)

cocos2d-xとCocosBuilder
cocos2d-xとCocosBuildercocos2d-xとCocosBuilder
cocos2d-xとCocosBuilder
 
cocos2d-xハンズオン勉強会 in 名古屋
cocos2d-xハンズオン勉強会 in 名古屋cocos2d-xハンズオン勉強会 in 名古屋
cocos2d-xハンズオン勉強会 in 名古屋
 
CocosBuilderとcocos2d-x JSB
CocosBuilderとcocos2d-x JSBCocosBuilderとcocos2d-x JSB
CocosBuilderとcocos2d-x JSB
 
Cocos2d-xを用いたゲームアプリ「めちゃギントン」開発の裏側
Cocos2d-xを用いたゲームアプリ「めちゃギントン」開発の裏側Cocos2d-xを用いたゲームアプリ「めちゃギントン」開発の裏側
Cocos2d-xを用いたゲームアプリ「めちゃギントン」開発の裏側
 
XOOPS Cube 2012
XOOPS Cube 2012XOOPS Cube 2012
XOOPS Cube 2012
 
かんたんなcocos2d-xの紹介
かんたんなcocos2d-xの紹介かんたんなcocos2d-xの紹介
かんたんなcocos2d-xの紹介
 
Cocos2d-x ver.3 開発の効率化
Cocos2d-x ver.3 開発の効率化Cocos2d-x ver.3 開発の効率化
Cocos2d-x ver.3 開発の効率化
 
Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島
 

Mais de Akihiro Matsuura

Mais de Akihiro Matsuura (12)

SQLite の暗号化
SQLite の暗号化SQLite の暗号化
SQLite の暗号化
 
SQLite の暗号化
SQLite の暗号化SQLite の暗号化
SQLite の暗号化
 
Cocos2d-x Console @Cocos Talks #3
Cocos2d-x Console  @Cocos Talks #3Cocos2d-x Console  @Cocos Talks #3
Cocos2d-x Console @Cocos Talks #3
 
SimpleAudioEngine のカスタマイズ
SimpleAudioEngine のカスタマイズSimpleAudioEngine のカスタマイズ
SimpleAudioEngine のカスタマイズ
 
Yidev cocos2dx
Yidev cocos2dxYidev cocos2dx
Yidev cocos2dx
 
cocos2d-x 開発の効率化
cocos2d-x 開発の効率化cocos2d-x 開発の効率化
cocos2d-x 開発の効率化
 
What I talk about When I talk about Cocos2d-x
What I talk about When I talk about Cocos2d-xWhat I talk about When I talk about Cocos2d-x
What I talk about When I talk about Cocos2d-x
 
Cocos2dx tips
Cocos2dx tipsCocos2dx tips
Cocos2dx tips
 
Cocos2dx 基本編
Cocos2dx 基本編Cocos2dx 基本編
Cocos2dx 基本編
 
Cocos2dx 勉強会
Cocos2dx 勉強会Cocos2dx 勉強会
Cocos2dx 勉強会
 
cocos2d で遊ぼう
cocos2d で遊ぼうcocos2d で遊ぼう
cocos2d で遊ぼう
 
CakePHP in iPhone App
CakePHP in iPhone AppCakePHP in iPhone App
CakePHP in iPhone App
 

Último

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Último (9)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

Cocos2dx Tips - Box2d, Normal mapping