Angular2使用threejs Orbitcontrols

gru*_*unk 10 three.js angular-cli angular

我试图在我的angular(cli)2 app中使用threejs例子.

所以我安装了threejs:

npm install three --save
Run Code Online (Sandbox Code Playgroud)

然后添加了打字:

npm install @types/three --save-dev
Run Code Online (Sandbox Code Playgroud)

最后我的组件看起来像这样:

import { Component, OnInit } from '@angular/core';
import * as THREE from 'three';

@Component({
    selector: 'app-testthreejs',
    templateUrl: './testthreejs.component.html',
    styleUrls: ['./testthreejs.component.css']
})
export class TestthreejsComponent implements OnInit {
//
}
Run Code Online (Sandbox Code Playgroud)

有了这个,我可以使用三个功能,没有任何问题.

我想使用node_modules/three/examples/js /中的一些例子,更准确地说是OrbitControl.这些打字给我在visual studio代码中自动完成: vscode

但是一旦我尝试使用它,我有以下错误:

TypeError:WEBPACK_IMPORTED_MODULE_1_three .OrbitControls不是构造函数

有没有办法通过一些导入提供OrbitControls(和其他例子)?我应该只在我的HTML中包含control.js吗?

处理这个问题的最佳方法是什么?

ulm*_*zov 10

尝试使用替代软件包 https://www.npmjs.com/package/three-orbitcontrols-ts

1.安装包

import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
Run Code Online (Sandbox Code Playgroud)

2.在您的文件中使用

npm install --save three-orbitcontrols-ts
Run Code Online (Sandbox Code Playgroud)


gru*_*unk 7

终于找到了解决方案:

1-通过npm安装OrbitControls:

npm install three-orbit-controls --save
Run Code Online (Sandbox Code Playgroud)

2-在组件中导入THREE和OrbitControl:

import * as THREE from 'three';
var OrbitControls = require('three-orbit-controls')(THREE)
Run Code Online (Sandbox Code Playgroud)

那我可以做

this.controls = new OrbitControls(this.camera,this.renderer.domElement);
Run Code Online (Sandbox Code Playgroud)