Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
thrree.js入門
Search
kaidouji85
June 16, 2017
Technology
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
thrree.js入門
kaidouji85
June 16, 2017
More Decks by kaidouji85
See All by kaidouji85
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
650
AbortControllerでPromiseをキャンセルする
kaidouji85
0
62
一発芸!!なんちゃってローカライズ
kaidouji85
0
120
AWSだけでネット対戦できるブラウザゲームを作った話
kaidouji85
0
100
GitHub CopilotでJavaScript開発効率を爆上げする
kaidouji85
0
140
Serverless + Fargate構成で継続的デリバリーの速度を劇的に改善した話
kaidouji85
0
1.1k
サーバーレスアーキテクチャこそ"ヘキサゴナルアーキテクチャ"
kaidouji85
0
130
サーバーレスでターンベース制のネット対戦ゲームを作った話
kaidouji85
0
690
CDKで構築したFargateのデプロイ時間を改善した話
kaidouji85
2
620
Other Decks in Technology
See All in Technology
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
190
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
110
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
120
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
1つのリクエストを追って理解する - llm-dのP/D分離
akhino
1
160
その Valkey 使いこなしていますか?
onk
PRO
5
1.5k
フロントエンドカンファレンス関西2026 - 速すぎるUIに、待ち時間を
teamlab
PRO
0
130
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
170
re:Invent初参加で変わったこと、2回目にやってみたいこと(JAWS-UG彩の国埼玉 #12)
mhrtech
2
220
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
580
Kiro Crewをはじめよう
kizawa2020
1
160
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
How to train your dragon (web standard)
notwaldorf
96
6.9k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Paper Plane
katiecoart
PRO
5
54k
Optimizing for Happiness
mojombo
378
71k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Git: the NoSQL Database
bkeepers
PRO
433
67k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
800
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
Agile that works and the tools we love
rasmusluckow
331
22k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Designing for Timeless Needs
cassininazir
1
530
Transcript
UISFFKTೖ ϓϩάϥϛϯάੜ์ૹษڧձୈճ !αΠϘζגࣜձࣾদࢁΦϑΟε ɹ༎հ
ࣗݾհ ɹ༎հ ϓϩάϥϚʔͬͯ·͢ +4͕େ͖Ͱ͢ ϓϩੜͪΌΜՄѪ͍ʂʂ
দࢁͱ͍͑ळࢁܑఋ
ळࢁܑఋͱ͍͑ઓ؋ࡾּ
ࡾּ UISFF
ͱ͍͏༁Ͱ UISFFKTͷΛ͠·͢
ΞδΣϯμ UISFFKTΛ͏ཧ༝ UISFFKTೖ %ϓϩάϥϛϯάUJQT ·ͱΊ
ΞδΣϯμ UISFFKTΛ͏ཧ༝ UISFFKTೖ %ϓϩάϥϛϯάUJQT ·ͱΊ
UISFFKTͱ +BWB4DSJQUͰ%͕؆୯ʹ͑ΔΑ͏ʹͳΔ ϥΠϒϥϦͰ͢ +BWB4DSJQUʹ8FC(-ͱ͍͏ඪ४Ͱ %Λѻ͏ػೳ͕͋Γ·͢ 8FC(-Λ͏ͷେมͰ͢ ˢԿނ͔ͱݴ͏ͱɺͦΕʜʜ
8FC(-㱠+BWB4DSJQU
γΣʔμʔݴޠ 8FH(-Λ͏ʹ+BWB4DSJQUͱશʹผͷ γΣʔμʔݴޠΛֶͿඞཁ͕͋Γ·͢ +4෦ߦྻܭࢉ͕ଟͯ͘େมͰ͢ attribute vec3 aVertexPosition; uniform mat4 uMVMatrix;
uniform mat4 uPMatrix; void main(void) { gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0); }
UISFFKTͰָͯ͠ 8FC(-Λ͍·͠ΐ͏
ΞδΣϯμ UISFFKTΛ͏ཧ༝ UISFFKTೖ %ϓϩάϥϛϯάUJQT ·ͱΊ
UISFFKTͰIFMMPXPSME ཱํମΛදࣔ͢ΔϓϩάϥϜΛ࡞Γ·͢ ιʔεͪ͜Βʹ͋Γ·͢ IUUQTHJUIVCDPNLBJEPVKJIFMMPUISFFKT
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(
75, window.innerWidth/ window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5; var render = function () { requestAnimationFrame( render ); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render();
Կ͜Εɺ ҙຯ͔Μͳ͍
େৎɺ %ʹऀ͕ଟ͍ͷͰ ͘͠ݟ͑Δ͚ͩͰ͢
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
3FOEFS ϒϥβʹ%ը໘Λඳը͢Δͷ 3FOEFSҎԼύϥϝʔλͰ%ඳը͠·͢ 4DFOF %ମ͕ஔ͔Ε͍ͯΔੈք $BNFSB 3FOEFSΛࣸਅʹྫ͑Δͱ͔Γ͍͢Ͱ͢
3FOEFS 4DFOF $BNFSB
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
$BNFSB %ۭؒΛࡱӨ͢ΔΧϝϥͰ͢ ݱ࣮ͷΧϝϥಉ༷ɺ༻్ʹԠͯ͡৭ʑͳͷ͕ ͋Γ·͢ αϯϓϧίʔυͰ1FSTQFDUJWF$BNFSB ಁࢹӨΧϝϥ Λ͍ͬͯ·͢ IUUQTXXXBUXJLJKQUISFFKTQBHFT IUNM
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
4DFOF %ϞσϧɺޫݯͳͲΛஔ͢ΔͷͰ͢ %ۭؒͷੈքͦͷͷͰ͢
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
.FTI %ۭؒʹஔ͢ΔମͰ͢ ΩϟϥΫλʔɺՈɺϏϧͳͲͷഎܠͳͲ͕ .FTIʹ֘͠·͢
.FTI (FPNFUSZ .BUFSJBM ܗঢ় ɹ৭ ɹࡐ࣭ ɹςΫενϟ
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
(FPNFUSZ ମͷܗঢ়σʔλ αϯϓϧϓϩάϥϜͰཱํମΛ͍ͬͯΔ ଞʹฏ໘ɺٿମͳͲجຊతͳܗ͕ ༻ҙ͞Ε͍ͯΔ
UISFFKTͷओͳऀ 3FOEFS 4DFOF $BNFSB (FPNFUSZ .FTI .BUFSJBM
.BUFSJBM ମͷࡐ࣭ΛܾΊΔͷ ৭ɺޫͷࣹ۩߹ɺෆಁ໌ͳͲΛઃఆͰ͖Δ ςΫενϟͷઃఆΛ͢Δͷ͜͜
͏Ұαϯϓϧίʔυ ΛݟͯΈ·͠ΐ͏
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(
75, window.innerWidth/ window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5; var render = function () { requestAnimationFrame( render ); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render();
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(
75, window.innerWidth/ window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5; var render = function () { requestAnimationFrame( render ); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render(); UISFFKTͷऀΛ ॳظԽͯ͠Δ͚ͩ
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(
75, window.innerWidth/ window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5; var render = function () { requestAnimationFrame( render ); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render();
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(
75, window.innerWidth/ window.innerHeight, 0.1, 1000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); var cube = new THREE.Mesh( geometry, material ); scene.add( cube ); camera.position.z = 5; var render = function () { requestAnimationFrame( render ); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render(); ͋ͱ͜ͷ෦͕ Α͔͘Βͳ͍
͍͜͜ΘΏΔ ήʔϜϧʔϓͰ͢
ήʔϜϧʔϓͱ ήʔϜը໘ΛΞχϝʔγϣϯͤ͞ΔΈ ήʔϜը໘ύϥύϥອըͷཁྖͰɺ ΞχϝʔγϣϯΛ͍ͯ͠Δ ύϥύϥອըΛϓϩάϥϜͰ࠶ݱ͢Δͱɺ ແݶϧʔϓʹͳΔ
SFRVFTU"OJNBUJPO'SBNF ϒϥβͰήʔϜϧʔϓΛ࣮ݱ͢Δͱ͖ʹ ͏ؔ ಈ͖ͱͯ͠ɺϒϥβը໘࠶ඳըલʹ ొͨ͠ίʔϧόοΫؔΛݺͿͱݴ͏ͷ IUUQTEFWFMPQFSNP[JMMBPSHKBEPDT8FC "1*8JOEPXSFRVFTU"OJNBUJPO'SBNF
ήʔϜϧʔϓ࣮ݱํ๏ var render = function () { requestAnimationFrame( render );
cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render(); ᶃSFOEFSΛ࣮ߦ ᶄSFRVFTU"OJNBUJPO'SBNFʹSFOEFSΛొ ᶅSFOEFS͕ؔऴྃ͢Δ ᶆϒϥβ࠶ඳըલʹSFOEFS͕ݺΕΔ ᶃʹΔ
ήʔϜϧʔϓͷॲཧ var render = function () { requestAnimationFrame( render );
cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; render(); ᶃ ᶄ ᶃཱํମͷYɺZ࣠ํͷճస֯Λ ͢Δ ᶄ%ը໘Λඳը͢Δ
UISFFKTجຊ·ͱΊ %ੈքͷجຊͱͳΔγʔϯɺͦͷੈքΛݟΔ ͨΊͷΧϝϥ ମͰ͋Δ.FTIɺܗঢ়σʔλ(FPNFUSZɺ ࡐ࣭σʔλ.BUFSJBM͔ΒΔ ήʔϜϧʔϓͱݺΕΔύϥύϥອըͷख๏Ͱɺ ήʔϜը໘͕ಈ͍͍ͯΔΑ͏ʹݟ͑Δ
৭ʑग़͖ͯ·͕ͨ͠ɺ
.FTI 3FOEFS 4DFOF $BNFSB (FPNFUSZ .BUFSJBM ·ͣओͳऀΛ ཧղ͠·͠ΐ͏
ΞδΣϯμ UISFFKTΛ͏ཧ༝ UISFFKTೖ %ϓϩάϥϛϯάUJQT ·ͱΊ
͡Ίʹ ͔͜͜ΒUJQTूʹͳΓ·͢ ൃදऀ͕ࣗ࡞ήʔϜΛ࡞ΔࡍʹಘͨݟΛ ڞ༗͠·͢ ࠷ऴతʹ͜Ε͘Β͍࡞ΕΔΑ͏ʹͳΓ·͢ IUUQTHPPHMEOZ23#
࡞ྫ खલຯͰ͕͢ʣ
࡞ྫͷίʔυ IUUQTHJUIVCDPNLBJEPVKJTUVEZUISFF KTDPNNJUTNBTUFS
UJQTҰཡ ϏϧϘʔυΛ࣮ݱ͢Δ εΧΠϘοΫεΛ࣮ݱ͢Δ ࣗ࡞ϞσϧΛಡΈࠐΉ
UJQTҰཡ ϏϧϘʔυΛ࣮ݱ͢Δ εΧΠϘοΫεΛ࣮ݱ͢Δ ࣗ࡞ϞσϧΛಡΈࠐΉ
ɹϏϧϘʔυͱ ৗʹΧϝϥͷํʹදࣔ͞ΕΔɺ ൘ঢ়ͷΦϒδΣΫτ %ۭؒʹ࣍ݩը૾Λද͍ࣔͤͨ࣌͞ʹɺ Α͘ΘΕ͍ͯ·͢ ࡞ྫͩͱɺϩϘοτɺ͕ϏϧϘʔυͰ͢ ࣮ࡏͷήʔϜͩͱɺϖʔύʔϚ˓Φ31(ɺ εύ˓ϘͳͲ
ϏϧϘʔυ࣮ํ๏ ϏϧϘʔυͷRVPUBOJPO ճస֯ ʹɺ ΧϝϥͷRVPUBOJPOΛηοτ͠·͠ΐ͏ ˢ্هॲཧΛΔͷɺήʔϜϧʔϓͷதͰ͢ mesh.quaternion.copy(camera.quaternion);
ͬͱৄ͍͠ίʔυྫ IUUQTHJUIVCDPNLBJEPVKJTUVEZUISFF KTCMPCNBTUFSTSDTUBHFTDIPPMTDIPPM CVJMEUSFFCJMMCPBSEKT
UJQTҰཡ ϏϧϘʔυΛ࣮ݱ͢Δ εΧΠϘοΫεΛ࣮ݱ͢Δ ࣗ࡞ϞσϧΛಡΈࠐΉ
εΧΠϘοΫεͱ ശͷଆʹԕܠͷը૾ΛషΓ͚ͯɺ ͞ແݶͷੈքʹ͍ΔΑ͏ʹࡨ֮ͤ͞Δख๏ ࡞ྫͰۭɺ໘ͳͲʹεΧΠϘοΫεΛ༻
εΧΠϘοΫε࡞ํ๏ ԕܠը૾ΛࣗͰඳ͘ͷେมͳͷͰɺ 5FSSBHFOΛ͍·͠ΐ͏ 5FSSBHFOͱ%Ͱ৭ʑͳܗΛ࡞Δ͜ͱ͕ Ͱ͖ΔιϑτͰ͢ ํ ্Լͷܭຕͷը૾Λ༻ҙ͠·͠ΐ͏
εΧΠϘοΫεը૾ྫ
۩ମతͳखॱ ʮ5FSBHHFOɺεΧΠϘοΫεʯͰάάΔͱ ݁ߏώοτ͠·͢ ݸਓతʹɺ͜ͷϒϩά͕Φεεϝ IUUQEIBUFOBOFKQ OBLBNVSB
UJQTҰཡ ϏϧϘʔυΛ࣮ݱ͢Δ εΧΠϘοΫεΛ࣮ݱ͢Δ ࣗ࡞ϞσϧΛಡΈࠐΉ
UISFFKTͷϞσϧϑΝΠϧ UISFFKTઐ༻ͷKTPOϑΝΠϧ͕͋Γ·͢ ༗໊ͳ%ιϑτʹݢฒΈUISFFKTઐ༻KTPOΛ ॻ͖ग़͢ϓϥάΠϯ͕͋Γ·͢ .FUBTFRVPJBɺ#MFOEFSΛࢼ͠·͕ͨ͠ɺ ͲͪΒ҆ఆ͠·ͤΜͰͨ͠
.FUBTFRVPJB ݴΘͣͱΕͨࠃ࢈ϞσϦϯάπʔϧ ඪ४ͰUISFFKTઐ༻KTPOͷग़ྗʹରԠ ςΫενϟ্͕Լٯ͞·ʹදࣔ͞ΕΔҎ֎ɺ ಛʹ͋Γ·ͤΜͰͨ͠
.FUBTFRVPJB UISFFKT ࣮ࡍͷঢ়
ෆ۩߹ͷճආࡦ ը૾ϑΝΠϧΛ্Լɺࠨӈٯʹ͢Ε ͳ͘දࣔͰ͖·͢ .FUBTFRVPJBެࣜ##4Ͱ࣭ͨ͠Βɺ ˢͷΑ͏ͳճΛ͖·ͨ͠
#MFOEFS ࠃࡍతʹ༗໊ͳ%ιϑτ ϑϦʔͳͷʹػೳ͕ϋΠΤϯυͳιϑτʹ ඖఢ͢Δ UISFFKTઐ༻KTPOΛॻ͖ग़͢ϓϥάΠϯ͕͋Δ ͕ɺͦͦϞσϧ͕දࣔ͞Εͳ͔ͬͨ
࠷ޙʹ͓·͚Ͱ
1SPKFDU%0("
1SPKFDU%PHBͱ ੵΈײ֮Ͱ%Ϟσϧ͕࡞ΕΔιϑτ ࠷ॳ͔Β༻ҙ͞Ε͍ͯΔύʔπ͕ଟͯ͘ɺ ૉਓͰͦΕͬΆ͍ͷ͕࡞ΕΔ ެࣜαΠτʹՃύʔπ͕͋ΔͷͰɺ શ෦ೖΕͨํ͕͍͍ ࡞ྫͷϩϘοτ͜ΕͰ࡞Γ·ͨ͠
None
None
None
ૉਓͰ ͜Ε͚ͩͷͷ͕ ࡞Ε·͢
%PHBҙ ͍ΘΏΔϩʔϙϦϞσϧͰͳ͍ͷͰɺ ήʔϜͰͦͷ··͏ʹෆ͖ ˢϏϧϘʔυͱͯ͠͏ͳΒશવ͋Γ ϝΧܥҎ֎গۤ͠ख ͔Δਓʹ%PHBͬͯΔͳͱҰൃͰόϨΔ
ΞδΣϯμ UISFFKTΛ͏ཧ༝ UISFFKTೖ %ϓϩάϥϛϯάUJQT ·ͱΊ
·ͱΊ UISFFKTͱ+BWB4DSJQUͰ؆୯ʹ%Λ ͏ͨΊͷϥΠϒϥϦͰ͋Δ UISFFKTʹऀ͕ͨ͘͞Μ͍ΔͷͰɺ ·ͣͦΕΒΛҰͭҰͭཧղ͠Α͏ .FUBTFRVPJBɺ5FSSBHFOɺ%PHBͳͲͰUISFFKT ༻ͷࣗ࡞ૉࡐΛͲΜͲΜ࡞Ζ͏
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠