質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

WebGL

WebGL(ウェブジーエル)は、ウェブブラウザで 3次元コンピュータグラフィックスを表示させるための標準仕様です。

Q&A

解決済

1回答

1144閲覧

スクロールに伴ってWebGLを動かす

aaachi

総合スコア69

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

WebGL

WebGL(ウェブジーエル)は、ウェブブラウザで 3次元コンピュータグラフィックスを表示させるための標準仕様です。

0グッド

0クリップ

投稿2018/11/13 04:35

このサイトのアニメーションに使用されているプラグインが何というものなのか、ご教示頂きたいです。
(プラグインを使わず書かれているのかもしれません)
https://moxy.studio/

■試したこと
おそらくWebGLであると思っています。
コンソール画面を確認し、詳しいプラグインが分からなかった(非表示にされている?)こと、
また、「WebGL スクロール」等の語句で検索を試しましたが、求めているものが見つからなかったため、質問させて下さい。

実装したいこと

スクロール↑↓に伴って、3D空間を移動する動き。
(ただ、カメラを動かしているだけなのでしょうか?)

御回答宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おそらくThree.jsが使われています

このサイトのJSのようなコードはwebpack等でバンドルされていますので、
簡単には中身を見ることができませんが、いくつかコツがあるのでご存知かもしれませんが書いておきます。

コードを展開

デベロッパーツール上でJSファイルを見ると、1行のJS1ファイルにまとめられていますがまずは展開します。

https://developers.google.com/web/tools/chrome-devtools/javascript/pretty-print?hl=ja

これで改行されて見やすくなりますが、変数名や関数名は圧縮され
var c = i[a.id];のようなままです。

圧縮できない文字を探す

生のJSのメソッドやエラーメッセージ等は圧縮されません。
WebGLが使われているかどうかを調べるには

JavaScript

1getContext("webgl")

というメソッドを探します。
(ダブルクォーテーションがシングルクォーテーションになっているかもしれません)

当該のJSを検索してみると、このメソッドが見つかりますので
WebGLが使われている事がわかります。

次に主要なライブラリの文字で検索します。
Three.jsならthree Pixi.jsならpixiという具合です。

当該のJSから

JavaScript

1throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");

という文字が見つかりました。
こちらはThree.js内のエラーメッセージなので、このJSがThree.jsごとバンドルされていることがわかります。

ライブラリごとバンドルされていると、ライブラリ固有のメソッド名なども圧縮されてしまい、ここからは中身を読むことはなかなか難しいです。


スクロールに伴って動いている部分は、カメラを動かしているかシーン全体を動かしてるかのどちらかだと思います。

JavaScript

1window.addEventListener("scroll", this.handleScroll, { 2 passive: !0 3}), 4 5~~ 6 7o.handleScroll = function(t) { 8 var e = t.direction; 9 o.props.isScrollDisabled || o.props.isChangingStage || ("up" === e ? o.props.decreaseStage() : (o.props.increaseStage(), 10 o.props.currentStage === o.levels.length && Object(L.a)() < I.a.fullHeader && o.props.openMobileMenu())) 11}

scrollイベントにhandleScrollという処理があててあり、
その処理はスクロールの上下を判定して、次のステージ(このJS内ではそう名付けているようです)に移動するという感じです。

移動方法に関しては、他に質問を立てられているようですので、
そちらでまとめたほうがよろしいと思います。

https://teratail.com/questions/157908

投稿2018/11/14 03:02

mattari_panda

総合スコア429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問