Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
30bbdadb
T
three.js
项目概览
车家大少爷
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
30bbdadb
编写于
5月 20, 2019
作者:
M
Mugen87
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
JSM: Added module and TS file for PDBLoader.
上级
085dd83c
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
253 addition
and
0 deletion
+253
-0
docs/manual/en/introduction/Import-via-modules.html
docs/manual/en/introduction/Import-via-modules.html
+1
-0
examples/jsm/loaders/PDBLoader.d.ts
examples/jsm/loaders/PDBLoader.d.ts
+25
-0
examples/jsm/loaders/PDBLoader.js
examples/jsm/loaders/PDBLoader.js
+226
-0
utils/modularize.js
utils/modularize.js
+1
-0
未找到文件。
docs/manual/en/introduction/Import-via-modules.html
浏览文件 @
30bbdadb
...
...
@@ -119,6 +119,7 @@
<li>
MTLLoader
</li>
<li>
OBJLoader
</li>
<li>
PCDLoader
</li>
<li>
PDBLoader
</li>
<li>
PLYLoader
</li>
<li>
STLLoader
</li>
<li>
SVGLoader
</li>
...
...
examples/jsm/loaders/PDBLoader.d.ts
0 → 100644
浏览文件 @
30bbdadb
import
{
BufferGeometry
,
LoadingManager
}
from
'
../../../src/Three
'
;
export
interface
PDB
{
geometryAtoms
:
BufferGeometry
;
geometryBonds
:
BufferGeometry
;
json
:
{
atoms
:
any
[][],
bonds
:
number
[][]
}
}
export
class
PDBLoader
{
constructor
(
manager
?:
LoadingManager
);
manager
:
LoadingManager
;
path
:
string
;
load
(
url
:
string
,
onLoad
:
(
pdb
:
PDB
)
=>
void
,
onProgress
?:
(
event
:
ProgressEvent
)
=>
void
,
onError
?:
(
event
:
ErrorEvent
)
=>
void
)
:
void
;
setPath
(
path
:
string
)
:
this
;
parse
(
text
:
string
)
:
PDB
;
}
examples/jsm/loaders/PDBLoader.js
0 → 100644
浏览文件 @
30bbdadb
/**
* @author alteredq / http://alteredqualia.com/
* @author Mugen87 / https://github.com/Mugen87
*/
import
{
BufferGeometry
,
DefaultLoadingManager
,
FileLoader
,
Float32BufferAttribute
}
from
"
../../../build/three.module.js
"
;
var
PDBLoader
=
function
(
manager
)
{
this
.
manager
=
(
manager
!==
undefined
)
?
manager
:
DefaultLoadingManager
;
};
PDBLoader
.
prototype
=
{
constructor
:
PDBLoader
,
load
:
function
(
url
,
onLoad
,
onProgress
,
onError
)
{
var
scope
=
this
;
var
loader
=
new
FileLoader
(
scope
.
manager
);
loader
.
setPath
(
scope
.
path
);
loader
.
load
(
url
,
function
(
text
)
{
onLoad
(
scope
.
parse
(
text
)
);
},
onProgress
,
onError
);
},
setPath
:
function
(
value
)
{
this
.
path
=
value
;
return
this
;
},
// Based on CanvasMol PDB parser
parse
:
function
(
text
)
{
function
trim
(
text
)
{
return
text
.
replace
(
/^
\s\s
*/
,
''
).
replace
(
/
\s\s
*$/
,
''
);
}
function
capitalize
(
text
)
{
return
text
.
charAt
(
0
).
toUpperCase
()
+
text
.
substr
(
1
).
toLowerCase
();
}
function
hash
(
s
,
e
)
{
return
'
s
'
+
Math
.
min
(
s
,
e
)
+
'
e
'
+
Math
.
max
(
s
,
e
);
}
function
parseBond
(
start
,
length
)
{
var
eatom
=
parseInt
(
lines
[
i
].
substr
(
start
,
length
)
);
if
(
eatom
)
{
var
h
=
hash
(
satom
,
eatom
);
if
(
bhash
[
h
]
===
undefined
)
{
bonds
.
push
(
[
satom
-
1
,
eatom
-
1
,
1
]
);
bhash
[
h
]
=
bonds
.
length
-
1
;
}
else
{
// doesn't really work as almost all PDBs
// have just normal bonds appearing multiple
// times instead of being double/triple bonds
// bonds[bhash[h]][2] += 1;
}
}
}
function
buildGeometry
()
{
var
build
=
{
geometryAtoms
:
new
BufferGeometry
(),
geometryBonds
:
new
BufferGeometry
(),
json
:
{
atoms
:
atoms
,
bonds
:
bonds
}
};
var
geometryAtoms
=
build
.
geometryAtoms
;
var
geometryBonds
=
build
.
geometryBonds
;
var
i
,
l
;
var
verticesAtoms
=
[];
var
colorsAtoms
=
[];
var
verticesBonds
=
[];
// atoms
for
(
i
=
0
,
l
=
atoms
.
length
;
i
<
l
;
i
++
)
{
var
atom
=
atoms
[
i
];
var
x
=
atom
[
0
];
var
y
=
atom
[
1
];
var
z
=
atom
[
2
];
verticesAtoms
.
push
(
x
,
y
,
z
);
var
r
=
atom
[
3
][
0
]
/
255
;
var
g
=
atom
[
3
][
1
]
/
255
;
var
b
=
atom
[
3
][
2
]
/
255
;
colorsAtoms
.
push
(
r
,
g
,
b
);
}
// bonds
for
(
i
=
0
,
l
=
bonds
.
length
;
i
<
l
;
i
++
)
{
var
bond
=
bonds
[
i
];
var
start
=
bond
[
0
];
var
end
=
bond
[
1
];
verticesBonds
.
push
(
verticesAtoms
[
(
start
*
3
)
+
0
]
);
verticesBonds
.
push
(
verticesAtoms
[
(
start
*
3
)
+
1
]
);
verticesBonds
.
push
(
verticesAtoms
[
(
start
*
3
)
+
2
]
);
verticesBonds
.
push
(
verticesAtoms
[
(
end
*
3
)
+
0
]
);
verticesBonds
.
push
(
verticesAtoms
[
(
end
*
3
)
+
1
]
);
verticesBonds
.
push
(
verticesAtoms
[
(
end
*
3
)
+
2
]
);
}
// build geometry
geometryAtoms
.
addAttribute
(
'
position
'
,
new
Float32BufferAttribute
(
verticesAtoms
,
3
)
);
geometryAtoms
.
addAttribute
(
'
color
'
,
new
Float32BufferAttribute
(
colorsAtoms
,
3
)
);
geometryBonds
.
addAttribute
(
'
position
'
,
new
Float32BufferAttribute
(
verticesBonds
,
3
)
);
return
build
;
}
var
CPK
=
{
h
:
[
255
,
255
,
255
],
he
:
[
217
,
255
,
255
],
li
:
[
204
,
128
,
255
],
be
:
[
194
,
255
,
0
],
b
:
[
255
,
181
,
181
],
c
:
[
144
,
144
,
144
],
n
:
[
48
,
80
,
248
],
o
:
[
255
,
13
,
13
],
f
:
[
144
,
224
,
80
],
ne
:
[
179
,
227
,
245
],
na
:
[
171
,
92
,
242
],
mg
:
[
138
,
255
,
0
],
al
:
[
191
,
166
,
166
],
si
:
[
240
,
200
,
160
],
p
:
[
255
,
128
,
0
],
s
:
[
255
,
255
,
48
],
cl
:
[
31
,
240
,
31
],
ar
:
[
128
,
209
,
227
],
k
:
[
143
,
64
,
212
],
ca
:
[
61
,
255
,
0
],
sc
:
[
230
,
230
,
230
],
ti
:
[
191
,
194
,
199
],
v
:
[
166
,
166
,
171
],
cr
:
[
138
,
153
,
199
],
mn
:
[
156
,
122
,
199
],
fe
:
[
224
,
102
,
51
],
co
:
[
240
,
144
,
160
],
ni
:
[
80
,
208
,
80
],
cu
:
[
200
,
128
,
51
],
zn
:
[
125
,
128
,
176
],
ga
:
[
194
,
143
,
143
],
ge
:
[
102
,
143
,
143
],
as
:
[
189
,
128
,
227
],
se
:
[
255
,
161
,
0
],
br
:
[
166
,
41
,
41
],
kr
:
[
92
,
184
,
209
],
rb
:
[
112
,
46
,
176
],
sr
:
[
0
,
255
,
0
],
y
:
[
148
,
255
,
255
],
zr
:
[
148
,
224
,
224
],
nb
:
[
115
,
194
,
201
],
mo
:
[
84
,
181
,
181
],
tc
:
[
59
,
158
,
158
],
ru
:
[
36
,
143
,
143
],
rh
:
[
10
,
125
,
140
],
pd
:
[
0
,
105
,
133
],
ag
:
[
192
,
192
,
192
],
cd
:
[
255
,
217
,
143
],
in
:
[
166
,
117
,
115
],
sn
:
[
102
,
128
,
128
],
sb
:
[
158
,
99
,
181
],
te
:
[
212
,
122
,
0
],
i
:
[
148
,
0
,
148
],
xe
:
[
66
,
158
,
176
],
cs
:
[
87
,
23
,
143
],
ba
:
[
0
,
201
,
0
],
la
:
[
112
,
212
,
255
],
ce
:
[
255
,
255
,
199
],
pr
:
[
217
,
255
,
199
],
nd
:
[
199
,
255
,
199
],
pm
:
[
163
,
255
,
199
],
sm
:
[
143
,
255
,
199
],
eu
:
[
97
,
255
,
199
],
gd
:
[
69
,
255
,
199
],
tb
:
[
48
,
255
,
199
],
dy
:
[
31
,
255
,
199
],
ho
:
[
0
,
255
,
156
],
er
:
[
0
,
230
,
117
],
tm
:
[
0
,
212
,
82
],
yb
:
[
0
,
191
,
56
],
lu
:
[
0
,
171
,
36
],
hf
:
[
77
,
194
,
255
],
ta
:
[
77
,
166
,
255
],
w
:
[
33
,
148
,
214
],
re
:
[
38
,
125
,
171
],
os
:
[
38
,
102
,
150
],
ir
:
[
23
,
84
,
135
],
pt
:
[
208
,
208
,
224
],
au
:
[
255
,
209
,
35
],
hg
:
[
184
,
184
,
208
],
tl
:
[
166
,
84
,
77
],
pb
:
[
87
,
89
,
97
],
bi
:
[
158
,
79
,
181
],
po
:
[
171
,
92
,
0
],
at
:
[
117
,
79
,
69
],
rn
:
[
66
,
130
,
150
],
fr
:
[
66
,
0
,
102
],
ra
:
[
0
,
125
,
0
],
ac
:
[
112
,
171
,
250
],
th
:
[
0
,
186
,
255
],
pa
:
[
0
,
161
,
255
],
u
:
[
0
,
143
,
255
],
np
:
[
0
,
128
,
255
],
pu
:
[
0
,
107
,
255
],
am
:
[
84
,
92
,
242
],
cm
:
[
120
,
92
,
227
],
bk
:
[
138
,
79
,
227
],
cf
:
[
161
,
54
,
212
],
es
:
[
179
,
31
,
212
],
fm
:
[
179
,
31
,
186
],
md
:
[
179
,
13
,
166
],
no
:
[
189
,
13
,
135
],
lr
:
[
199
,
0
,
102
],
rf
:
[
204
,
0
,
89
],
db
:
[
209
,
0
,
79
],
sg
:
[
217
,
0
,
69
],
bh
:
[
224
,
0
,
56
],
hs
:
[
230
,
0
,
46
],
mt
:
[
235
,
0
,
38
],
ds
:
[
235
,
0
,
38
],
rg
:
[
235
,
0
,
38
],
cn
:
[
235
,
0
,
38
],
uut
:
[
235
,
0
,
38
],
uuq
:
[
235
,
0
,
38
],
uup
:
[
235
,
0
,
38
],
uuh
:
[
235
,
0
,
38
],
uus
:
[
235
,
0
,
38
],
uuo
:
[
235
,
0
,
38
]
};
var
atoms
=
[];
var
bonds
=
[];
var
histogram
=
{};
var
bhash
=
{};
var
x
,
y
,
z
,
index
,
e
;
// parse
var
lines
=
text
.
split
(
'
\n
'
);
for
(
var
i
=
0
,
l
=
lines
.
length
;
i
<
l
;
i
++
)
{
if
(
lines
[
i
].
substr
(
0
,
4
)
===
'
ATOM
'
||
lines
[
i
].
substr
(
0
,
6
)
===
'
HETATM
'
)
{
x
=
parseFloat
(
lines
[
i
].
substr
(
30
,
7
)
);
y
=
parseFloat
(
lines
[
i
].
substr
(
38
,
7
)
);
z
=
parseFloat
(
lines
[
i
].
substr
(
46
,
7
)
);
index
=
parseInt
(
lines
[
i
].
substr
(
6
,
5
)
)
-
1
;
e
=
trim
(
lines
[
i
].
substr
(
76
,
2
)
).
toLowerCase
();
if
(
e
===
''
)
{
e
=
trim
(
lines
[
i
].
substr
(
12
,
2
)
).
toLowerCase
();
}
atoms
[
index
]
=
[
x
,
y
,
z
,
CPK
[
e
],
capitalize
(
e
)
];
if
(
histogram
[
e
]
===
undefined
)
{
histogram
[
e
]
=
1
;
}
else
{
histogram
[
e
]
+=
1
;
}
}
else
if
(
lines
[
i
].
substr
(
0
,
6
)
===
'
CONECT
'
)
{
var
satom
=
parseInt
(
lines
[
i
].
substr
(
6
,
5
)
);
parseBond
(
11
,
5
);
parseBond
(
16
,
5
);
parseBond
(
21
,
5
);
parseBond
(
26
,
5
);
}
}
// build and return geometry
return
buildGeometry
();
}
};
export
{
PDBLoader
};
utils/modularize.js
浏览文件 @
30bbdadb
...
...
@@ -40,6 +40,7 @@ var files = [
{
path
:
'
loaders/MTLLoader.js
'
,
dependencies
:
[],
ignoreList
:
[
'
BackSide
'
,
'
DoubleSide
'
,
'
ClampToEdgeWrapping
'
,
'
MirroredRepeatWrapping
'
]
},
{
path
:
'
loaders/OBJLoader.js
'
,
dependencies
:
[],
ignoreList
:
[]
},
{
path
:
'
loaders/PCDLoader.js
'
,
dependencies
:
[],
ignoreList
:
[]
},
{
path
:
'
loaders/PDBLoader.js
'
,
dependencies
:
[],
ignoreList
:
[]
},
{
path
:
'
loaders/PLYLoader.js
'
,
dependencies
:
[],
ignoreList
:
[
'
Mesh
'
]
},
{
path
:
'
loaders/STLLoader.js
'
,
dependencies
:
[],
ignoreList
:
[
'
Mesh
'
,
'
MeshPhongMaterial
'
,
'
VertexColors
'
]
},
{
path
:
'
loaders/SVGLoader.js
'
,
dependencies
:
[],
ignoreList
:
[]
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录