質問: new THREE.MeshBasicMaterial( {color: 0x004400} ); THREE.Mesh.call(this, geometry, material ); this.translateOnAxis(new THREE.Vector3(0,1,0),h/2); this.translateOnAxis(new THREE.Vector3(0,0,1),d/2); } ``` ### 試したこと 参考書(「three.jsによるHTML53Dグラフィックス[改訂版]上」)によると、Meshクラス はコンストラクタの引数として指定されたGeometryクラスをプロパティgeometryとして有し、 オブジェクト作成時に使用したBoxGeometryクラスにはコンストラクタで指定したパラメータを 保持するparametersというプロパティがあるそうです。 そこで ObjctName.geometry.parameters.width で取得を試みましたが、 Ugougo.html:960 Uncaught TypeError: Cannot read property 'parameters' of undefined というエラーが表示されました。おそらくオブジェクトのプロパティgeometry取得の時点で 失敗しているのだと思いますが...... ### 補足情報(FW/ツールのバージョンなど) 環境として使用しているブラウザはGoogle Chrome 75.0です。 よろしくお願いします。
回答: 以下の公式サイト >https://threejs.org/docs/#api/en/geometries/BoxGeometry を見ると ``` var geometry = new THREE.BoxGeometry( 1, 1, 1 ); var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} ); var cube = new THREE.Mesh( geometry, material ); ``` とあった場合 `cube.geometry.parameters.width;`でwidthが取得できると書いてあります。 ここで質問者様の `THREE.Mesh.call(this, geometry, material );` というのが気になります。 ここを`new`で初期化し、そのオブジェクトに対して`.geometry.parameters.width;`とすることで解決できるのではないでしょうか?