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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Three.js

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

JavaScript

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

Q&A

解決済

2回答

2214閲覧

Three.jsでgeometryを生成するクラスを作りたい

mtoutside

総合スコア5

Three.js

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

JavaScript

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

0グッド

0クリップ

投稿2020/04/06 15:25

編集2020/04/08 06:28

前提・実現したいこと

FloatingCharsGeometry.js
FloatingChars.js

↑の処理をクラスで置き換えて作りたいのですが、FloatingCharsGeometryをうまくクラスで作れません。

geometryクラスのイメージ

js

1 class CreateGeometry { 2 constructor() { 3 this.init(); 4 } 5 init() { 6 this.geometry = new THREE.BufferGeometry(); 7 this.vertices = new Float32Array([ 8 -10.0, 10.0, 0, 9 -10.0, -10.0, 0, 10 10.0, -10.0, 0, 11 ]); 12 this.geometry.addAttribute( 'position', new THREE.BufferAttribute( this.vertices, 3 ) ); 13 } 14 } 15

このようなクラスを作り(実際はもう少し複雑な処理を実行)、

javascript

1class main { 2 constructor() { 3 this.init(); 4 } 5 init() { 6 this.geometry = new CreateGeometry(); 7 this.material = new THREE.MeshBasicMaterial({ 8 color: 0x000000, 9 wireframe: true, 10 side: THREE.DoubleSide 11 }); 12 this.mesh = new THREE.Mesh(this.geometry, this.material); 13 // 省略 14 } 15}

こんな感じで this.geometry = new CreateGeometry(); でgeometryを生成したいです。

発生している問題・エラーメッセージ

このようなエラーがでます。おそらく geometryが正しく作れてないのかと思います。

Uncaught TypeError: Cannot read property 'center' of undefined

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

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

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

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

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

guest

回答2

0

ベストアンサー

this.mesh = new THREE.Mesh(this.geometry, this.material);

第一引数がCreateGeometryのオブジェクトであってGeometryではないのが原因ではないでしょうか。

例えば
class CreateGeometry に

getGeometry(){ return this.geometry; }

を用意し
this.mesh = new THREE.Mesh(this.geometry.getGeometry(), this.material);
で解決するかと思います。

回答者はThree.js初心者です。
同じerrが出たので...間違っていたらすみません。

投稿2020/08/05 02:35

編集2020/08/05 02:40
ryunosuke0922

総合スコア9

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

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

mtoutside

2020/08/07 15:25

ありがとうございます。geometryをreturnしたら確かにうまくいきました!
guest

0

centerが未定義ですよ。というエラーですが、
貼られているコードの中にcenterはないので、この部分以外に問題があるのでは。

投稿2020/04/21 18:14

編集2020/04/21 18:15
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問