diff --git a/three/index.d.ts b/three/index.d.ts
index b4b4995ee8..35149e1d8f 100644
--- a/three/index.d.ts
+++ b/three/index.d.ts
@@ -1,6 +1,6 @@
// Type definitions for three.js 0.83
// Project: http://mrdoob.github.com/three.js/
-// Definitions by: Kon , Satoru Kimura , Florent Poujol , SereznoKot
+// Definitions by: Kon , Satoru Kimura , Florent Poujol , SereznoKot , HouChunlei
// Definitions: https://github.com/borisyankov/DefinitelyTyped
///
@@ -20,6 +20,8 @@
///
///
///
+///
+///
declare namespace THREE {
export const REVISION: string;
@@ -1996,7 +1998,7 @@ declare namespace THREE {
mimeType: MimeType;
path: string;
responseType: string;
- withCredentials: string
+ withCredentials: string
load(url: string, onLoad?: (responseText: string) => void, onProgress?: (request: ProgressEvent) => void, onError?:(event: ErrorEvent) => void): any;
setMimeType(mimeType: MimeType): FileLoader;
@@ -3589,7 +3591,7 @@ declare namespace THREE {
radius: number;
phi: number;
theta: number;
-
+
set(radius: number, phi: number, theta: number): Spherical;
clone(): this;
copy(other: this): this;
diff --git a/three/test/examples/ctm/ctmloader.ts b/three/test/examples/ctm/ctmloader.ts
new file mode 100644
index 0000000000..e35cffb6a4
--- /dev/null
+++ b/three/test/examples/ctm/ctmloader.ts
@@ -0,0 +1,7 @@
+///
+
+let _ctmloader = new THREE.CTMLoader();
+_ctmloader.load('https://github.com/mrdoob/three.js/blob/master/examples/models/ctm/ben.ctm', (geo: any) => {
+ console.log(geo.position);
+});
+
diff --git a/three/test/examples/octree.ts b/three/test/examples/octree.ts
new file mode 100644
index 0000000000..de7de86ac7
--- /dev/null
+++ b/three/test/examples/octree.ts
@@ -0,0 +1,11 @@
+///
+
+let _octree = new THREE.Octree({
+ underferred: false,
+ depthMax: Infinity,
+ objectsThreshold: 8,
+ overlapPct: 0.15,
+});
+
+console.log(_octree.getDepthEnd());
+
diff --git a/three/three-ctmloader.d.ts b/three/three-ctmloader.d.ts
new file mode 100644
index 0000000000..276f14b6a3
--- /dev/null
+++ b/three/three-ctmloader.d.ts
@@ -0,0 +1,36 @@
+// Type definitions for three.js (CTMLoader.js)
+// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/ctm/CTMLoader.js
+// Definitions by: Hou Chunlei
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+
+declare namespace THREE {
+ export class CTMLoader extends THREE.Loader {
+ constructor();
+
+ /**
+ * load multiple CTM parts defined in JSON.
+ * @param url(required)
+ * @param callback(required)
+ * @param parameters
+ */
+ loadParts(url: string, callback: () => any, parameters?: any): any;
+
+ /**
+ * Load CTMLoader compressed models
+ * @param url(required)
+ * @param callback(required)
+ * @param parameters
+ */
+ load(url: string, callback: () => any, parameters?: any): any;
+
+ /**
+ * create buffergeometry by ctm file.
+ * @param file(required)
+ * @param callback(required)
+ */
+ createModel(file: string, callback: () => any): any;
+
+ }
+}
diff --git a/three/three-octree.d.ts b/three/three-octree.d.ts
new file mode 100644
index 0000000000..3ce479e81f
--- /dev/null
+++ b/three/three-octree.d.ts
@@ -0,0 +1,42 @@
+// Type definitions for three.js (Octree.js)
+// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/Octree.js
+// Definitions by: Hou Chunlei
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+
+declare namespace THREE {
+ export class Octree {
+ constructor(parameters?: any);
+
+ update(): void;
+
+ add(object: any, options?: any): any;
+
+ addDeferred(object: any, options?: any): any;
+
+ addObjectData(object: any, part: any): any;
+
+ remove(object: any): any;
+
+ extend(octree: Octree): any;
+
+ rebuild(): any;
+
+ updateObject(object: any): any;
+
+ search(position: THREE.Vector3, radius: number, organizeByObject: boolean, direction: THREE.Vector3): any;
+
+ setRoot(root: any): any;
+
+ getDepthEnd(): number;
+
+ getNodeCountEnd(): number;
+
+ getObjectCountEnd(): number;
+
+ toConsole(): any;
+
+
+ }
+}