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
450
AbortControllerでPromiseをキャンセルする
kaidouji85
0
58
一発芸!!なんちゃってローカライズ
kaidouji85
0
120
AWSだけでネット対戦できるブラウザゲームを作った話
kaidouji85
0
98
GitHub CopilotでJavaScript開発効率を爆上げする
kaidouji85
0
140
Serverless + Fargate構成で継続的デリバリーの速度を劇的に改善した話
kaidouji85
0
1.1k
サーバーレスアーキテクチャこそ"ヘキサゴナルアーキテクチャ"
kaidouji85
0
130
サーバーレスでターンベース制のネット対戦ゲームを作った話
kaidouji85
0
680
CDKで構築したFargateのデプロイ時間を改善した話
kaidouji85
2
610
Other Decks in Technology
See All in Technology
Kiro Meetup #8 Kiro アップデート (2026/3/21〜2026/9/24)
katzueno
1
240
品質と信頼性を地続きにする
grimoh
2
1k
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
510
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
300
Why Agent Cost Needs Observability
nttcom
0
170
セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry
ymotongpoo
3
330
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
34
22k
特殊変数大全
dak2
0
140
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
180
エージェントはローカル、検証はMicroVM — Lambda MicroVMsでつくるServerless CI
fujioka6789
3
800
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
2
620
SREへの勘違いに気づいた後の話
tomodakengo
0
160
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.8k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
290
Building a Scalable Design System with Sketch
lauravandoore
464
34k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
RailsConf 2023
tenderlove
30
1.6k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
500
Faster Mobile Websites
deanohume
310
32k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
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 ༻ͷࣗ࡞ૉࡐΛͲΜͲΜ࡞Ζ͏
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠