Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
b1ef3409
T
three.js
项目概览
Ablesons
/
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,发现更多精彩内容 >>
提交
b1ef3409
编写于
11月 25, 2011
作者:
A
alteredq
浏览文件
操作
浏览文件
下载
差异文件
Sorting out accidental double-merge.
上级
3aa17678
c5613ebb
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
14 addition
and
17 deletion
+14
-17
build/Three.js
build/Three.js
+1
-1
build/custom/ThreeExtras.js
build/custom/ThreeExtras.js
+1
-1
examples/webgl_loader_json_blender.html
examples/webgl_loader_json_blender.html
+1
-1
src/extras/GeometryUtils.js
src/extras/GeometryUtils.js
+11
-14
未找到文件。
build/Three.js
浏览文件 @
b1ef3409
...
...
@@ -352,7 +352,7 @@ g;d++)i.push(new THREE.UV(e[d].u,e[d].v));b.faceVertexUvs[0].push(i)}return b},r
f
=
b
.
vertices
[
a
.
c
].
position
,
THREE
.
GeometryUtils
.
randomPointInTriangle
(
d
,
e
,
f
);
else
if
(
a
instanceof
THREE
.
Face4
){
d
=
b
.
vertices
[
a
.
a
].
position
;
e
=
b
.
vertices
[
a
.
b
].
position
;
f
=
b
.
vertices
[
a
.
c
].
position
;
var
b
=
b
.
vertices
[
a
.
d
].
position
,
g
;
c
?
a
.
_area1
&&
a
.
_area2
?(
c
=
a
.
_area1
,
g
=
a
.
_area2
):(
c
=
THREE
.
GeometryUtils
.
triangleArea
(
d
,
e
,
b
),
g
=
THREE
.
GeometryUtils
.
triangleArea
(
e
,
f
,
b
),
a
.
_area1
=
c
,
a
.
_area2
=
g
):(
c
=
THREE
.
GeometryUtils
.
triangleArea
(
d
,
e
,
b
),
g
=
THREE
.
GeometryUtils
.
triangleArea
(
e
,
f
,
b
));
return
THREE
.
GeometryUtils
.
random
()
*
(
c
+
g
)
<
c
?
THREE
.
GeometryUtils
.
randomPointInTriangle
(
d
,
e
,
b
):
THREE
.
GeometryUtils
.
randomPointInTriangle
(
e
,
f
,
b
)}},
randomPointsInGeometry
:
function
(
a
,
b
){
function
c
(
a
){
function
b
(
c
,
d
){
if
(
d
<
c
)
return
c
;
var
e
=
c
+
Math
.
floor
((
d
-
c
)
/
2
);
return
k
[
e
]
>
a
?
b
(
c
,
e
-
1
):
k
[
e
]
<
a
?
b
(
e
+
1
,
d
):
e
}
return
b
(
0
,
k
.
length
-
1
)}
var
d
,
e
,
f
=
a
.
faces
,
g
=
a
.
vertices
,
h
=
f
.
length
,
i
=
0
,
k
=
[],
j
,
o
,
p
,
m
;
for
(
e
=
0
;
e
<
h
;
e
++
){
d
=
f
[
e
];
if
(
d
instanceof
THREE
.
Face3
)
j
=
g
[
d
.
a
].
position
,
o
=
g
[
d
.
b
].
position
,
p
=
g
[
d
.
c
].
position
,
d
.
_area
=
THREE
.
GeometryUtils
.
triangleArea
(
j
,
o
,
p
);
else
if
(
d
instanceof
THREE
.
Face4
)
j
=
g
[
d
.
a
].
position
,
o
=
g
[
d
.
b
].
position
,
p
=
g
[
d
.
c
].
position
,
m
=
g
[
d
.
d
].
position
,
d
.
_area1
=
THREE
.
GeometryUtils
.
triangleArea
(
j
,
o
,
m
),
d
.
_area2
=
THREE
.
GeometryUtils
.
triangleArea
(
o
,
p
,
m
),
d
.
_area
=
d
.
_area1
+
d
.
_area2
;
i
+=
d
.
_area
;
k
[
e
]
=
i
}
d
=
[];
g
=
{};
for
(
e
=
0
;
e
<
b
;
e
++
)
h
=
THREE
.
GeometryUtils
.
random
()
*
i
,
h
=
c
(
h
),
d
[
e
]
=
THREE
.
GeometryUtils
.
randomPointInFace
(
f
[
h
],
a
,
!
0
),
g
[
h
]?
g
[
h
]
+=
1
:
g
[
h
]
=
1
;
return
d
},
triangleArea
:
function
(
a
,
b
,
c
){
var
d
,
e
=
THREE
.
GeometryUtils
.
__v1
;
e
.
sub
(
a
,
b
);
d
=
e
.
length
();
e
.
sub
(
a
,
c
);
a
=
e
.
length
();
e
.
sub
(
b
,
c
);
c
=
e
.
length
();
b
=
0.5
*
(
d
+
a
+
c
);
return
Math
.
sqrt
(
b
*
(
b
-
d
)
*
(
b
-
a
)
*
(
b
-
c
))},
center
:
function
(
a
){
a
.
computeBoundingBox
();
var
b
=
new
THREE
.
Matrix4
,
c
=-
0.5
*
(
a
.
boundingBox
.
x
[
1
]
+
a
.
boundingBox
.
x
[
0
]),
d
=-
0.5
*
(
a
.
boundingBox
.
y
[
1
]
+
a
.
boundingBox
.
y
[
0
]),
e
=-
0.5
*
(
a
.
boundingBox
.
z
[
1
]
+
a
.
boundingBox
.
z
[
0
]);
b
.
setTranslation
(
c
,
d
,
e
);
a
.
applyMatrix
(
b
);
a
.
computeBoundingBox
();
return
new
THREE
.
Vector3
(
c
,
d
,
e
)
},
normalizeUVs
:
function
(
a
){
for
(
var
a
=
a
.
faceVertexUvs
[
0
],
b
=
0
,
c
=
a
.
length
;
b
<
c
;
b
++
)
for
(
var
d
=
a
[
b
],
e
=
0
,
f
=
d
.
length
;
e
<
f
;
e
++
)
d
[
e
].
u
!==
1
&&
(
d
[
e
].
u
-=
Math
.
floor
(
d
[
e
].
u
)),
b
=
0.5
*
(
d
+
a
+
c
);
return
Math
.
sqrt
(
b
*
(
b
-
d
)
*
(
b
-
a
)
*
(
b
-
c
))},
center
:
function
(
a
){
a
.
computeBoundingBox
();
var
b
=
new
THREE
.
Vector3
;
b
.
x
=-
0.5
*
(
a
.
boundingBox
.
x
[
1
]
+
a
.
boundingBox
.
x
[
0
]);
b
.
y
=-
0.5
*
(
a
.
boundingBox
.
y
[
1
]
+
a
.
boundingBox
.
y
[
0
]);
b
.
z
=-
0.5
*
(
a
.
boundingBox
.
z
[
1
]
+
a
.
boundingBox
.
z
[
0
]);
a
.
applyMatrix
((
new
THREE
.
Matrix4
).
setTranslation
(
b
.
x
,
b
.
y
,
b
.
z
));
a
.
computeBoundingBox
();
return
b
},
normalizeUVs
:
function
(
a
){
for
(
var
a
=
a
.
faceVertexUvs
[
0
],
b
=
0
,
c
=
a
.
length
;
b
<
c
;
b
++
)
for
(
var
d
=
a
[
b
],
e
=
0
,
f
=
d
.
length
;
e
<
f
;
e
++
)
d
[
e
].
u
!==
1
&&
(
d
[
e
].
u
-=
Math
.
floor
(
d
[
e
].
u
)),
d
[
e
].
v
!==
1
&&
(
d
[
e
].
v
-=
Math
.
floor
(
d
[
e
].
v
))}};
THREE
.
GeometryUtils
.
random
=
THREE
.
Math
.
random16
;
THREE
.
GeometryUtils
.
__v1
=
new
THREE
.
Vector3
;
THREE
.
ImageUtils
=
{
crossOrigin
:
""
,
loadTexture
:
function
(
a
,
b
,
c
){
var
d
=
new
Image
,
e
=
new
THREE
.
Texture
(
d
,
b
);
d
.
onload
=
function
(){
e
.
needsUpdate
=!
0
;
c
&&
c
(
this
)};
d
.
crossOrigin
=
this
.
crossOrigin
;
d
.
src
=
a
;
return
e
},
loadTextureCube
:
function
(
a
,
b
,
c
){
var
d
,
e
=
[],
f
=
new
THREE
.
Texture
(
e
,
b
),
b
=
e
.
loadCount
=
0
;
for
(
d
=
a
.
length
;
b
<
d
;
++
b
)
e
[
b
]
=
new
Image
,
e
[
b
].
onload
=
function
(){
e
.
loadCount
+=
1
;
if
(
e
.
loadCount
===
6
)
f
.
needsUpdate
=!
0
;
c
&&
c
(
this
)},
e
[
b
].
crossOrigin
=
""
,
e
[
b
].
src
=
a
[
b
];
return
f
},
getNormalMap
:
function
(
a
,
b
){
var
c
=
function
(
a
){
var
b
=
Math
.
sqrt
(
a
[
0
]
*
a
[
0
]
+
a
[
1
]
*
a
[
1
]
+
a
[
2
]
*
a
[
2
]);
return
[
a
[
0
]
/
b
,
a
[
1
]
/
b
,
a
[
2
]
/
b
]};
b
|=
1
;
var
d
=
a
.
width
,
e
=
a
.
height
,
f
=
document
.
createElement
(
"
canvas
"
);
f
.
width
=
d
;
f
.
height
=
e
;
var
g
=
f
.
getContext
(
"
2d
"
);
g
.
drawImage
(
a
,
0
,
0
);
for
(
var
h
=
g
.
getImageData
(
0
,
0
,
d
,
e
).
data
,
i
=
g
.
createImageData
(
d
,
e
),
k
=
i
.
data
,
j
=
0
;
j
<
d
;
j
++
)
for
(
var
o
=
1
;
o
<
e
;
o
++
){
var
p
=
o
-
1
<
0
?
e
-
1
:
o
-
1
,
m
=
(
o
+
1
)
%
e
,
q
=
j
-
1
<
0
?
d
-
1
:
j
-
1
,
n
=
(
j
+
1
)
%
d
,
s
=
[],
r
=
[
0
,
0
,
h
[(
o
*
d
+
j
)
*
4
]
/
255
*
b
];
s
.
push
([
-
1
,
0
,
h
[(
o
*
d
+
q
)
*
4
]
/
255
*
b
]);
s
.
push
([
-
1
,
-
1
,
h
[(
p
*
d
+
q
)
*
4
]
/
255
*
b
]);
s
.
push
([
0
,
-
1
,
h
[(
p
*
d
+
j
)
*
4
]
/
255
*
b
]);
s
.
push
([
1
,
...
...
build/custom/ThreeExtras.js
浏览文件 @
b1ef3409
...
...
@@ -9,7 +9,7 @@ f;d++)i.push(new THREE.UV(e[d].u,e[d].v));b.faceVertexUvs[0].push(i)}return b},r
g
=
b
.
vertices
[
a
.
c
].
position
,
THREE
.
GeometryUtils
.
randomPointInTriangle
(
d
,
e
,
g
);
else
if
(
a
instanceof
THREE
.
Face4
){
d
=
b
.
vertices
[
a
.
a
].
position
;
e
=
b
.
vertices
[
a
.
b
].
position
;
g
=
b
.
vertices
[
a
.
c
].
position
;
var
b
=
b
.
vertices
[
a
.
d
].
position
,
f
;
c
?
a
.
_area1
&&
a
.
_area2
?(
c
=
a
.
_area1
,
f
=
a
.
_area2
):(
c
=
THREE
.
GeometryUtils
.
triangleArea
(
d
,
e
,
b
),
f
=
THREE
.
GeometryUtils
.
triangleArea
(
e
,
g
,
b
),
a
.
_area1
=
c
,
a
.
_area2
=
f
):(
c
=
THREE
.
GeometryUtils
.
triangleArea
(
d
,
e
,
b
),
f
=
THREE
.
GeometryUtils
.
triangleArea
(
e
,
g
,
b
));
return
THREE
.
GeometryUtils
.
random
()
*
(
c
+
f
)
<
c
?
THREE
.
GeometryUtils
.
randomPointInTriangle
(
d
,
e
,
b
):
THREE
.
GeometryUtils
.
randomPointInTriangle
(
e
,
g
,
b
)}},
randomPointsInGeometry
:
function
(
a
,
b
){
function
c
(
a
){
function
b
(
d
,
c
){
if
(
c
<
d
)
return
d
;
var
e
=
d
+
Math
.
floor
((
c
-
d
)
/
2
);
return
k
[
e
]
>
a
?
b
(
d
,
e
-
1
):
k
[
e
]
<
a
?
b
(
e
+
1
,
c
):
e
}
return
b
(
0
,
k
.
length
-
1
)}
var
d
,
e
,
g
=
a
.
faces
,
f
=
a
.
vertices
,
h
=
g
.
length
,
i
=
0
,
k
=
[],
j
,
q
,
p
,
m
;
for
(
e
=
0
;
e
<
h
;
e
++
){
d
=
g
[
e
];
if
(
d
instanceof
THREE
.
Face3
)
j
=
f
[
d
.
a
].
position
,
q
=
f
[
d
.
b
].
position
,
p
=
f
[
d
.
c
].
position
,
d
.
_area
=
THREE
.
GeometryUtils
.
triangleArea
(
j
,
q
,
p
);
else
if
(
d
instanceof
THREE
.
Face4
)
j
=
f
[
d
.
a
].
position
,
q
=
f
[
d
.
b
].
position
,
p
=
f
[
d
.
c
].
position
,
m
=
f
[
d
.
d
].
position
,
d
.
_area1
=
THREE
.
GeometryUtils
.
triangleArea
(
j
,
q
,
m
),
d
.
_area2
=
THREE
.
GeometryUtils
.
triangleArea
(
q
,
p
,
m
),
d
.
_area
=
d
.
_area1
+
d
.
_area2
;
i
+=
d
.
_area
;
k
[
e
]
=
i
}
d
=
[];
f
=
{};
for
(
e
=
0
;
e
<
b
;
e
++
)
h
=
THREE
.
GeometryUtils
.
random
()
*
i
,
h
=
c
(
h
),
d
[
e
]
=
THREE
.
GeometryUtils
.
randomPointInFace
(
g
[
h
],
a
,
!
0
),
f
[
h
]?
f
[
h
]
+=
1
:
f
[
h
]
=
1
;
return
d
},
triangleArea
:
function
(
a
,
b
,
c
){
var
d
,
e
=
THREE
.
GeometryUtils
.
__v1
;
e
.
sub
(
a
,
b
);
d
=
e
.
length
();
e
.
sub
(
a
,
c
);
a
=
e
.
length
();
e
.
sub
(
b
,
c
);
c
=
e
.
length
();
b
=
0.5
*
(
d
+
a
+
c
);
return
Math
.
sqrt
(
b
*
(
b
-
d
)
*
(
b
-
a
)
*
(
b
-
c
))},
center
:
function
(
a
){
a
.
computeBoundingBox
();
var
b
=
new
THREE
.
Matrix4
,
c
=-
0.5
*
(
a
.
boundingBox
.
x
[
1
]
+
a
.
boundingBox
.
x
[
0
]),
d
=-
0.5
*
(
a
.
boundingBox
.
y
[
1
]
+
a
.
boundingBox
.
y
[
0
]),
e
=-
0.5
*
(
a
.
boundingBox
.
z
[
1
]
+
a
.
boundingBox
.
z
[
0
]);
b
.
setTranslation
(
c
,
d
,
e
);
a
.
applyMatrix
(
b
);
a
.
computeBoundingBox
();
return
new
THREE
.
Vector3
(
c
,
d
,
e
)
},
normalizeUVs
:
function
(
a
){
for
(
var
a
=
a
.
faceVertexUvs
[
0
],
b
=
0
,
c
=
a
.
length
;
b
<
c
;
b
++
)
for
(
var
d
=
a
[
b
],
e
=
0
,
g
=
d
.
length
;
e
<
g
;
e
++
)
d
[
e
].
u
!==
1
&&
(
d
[
e
].
u
-=
Math
.
floor
(
d
[
e
].
u
)),
b
=
0.5
*
(
d
+
a
+
c
);
return
Math
.
sqrt
(
b
*
(
b
-
d
)
*
(
b
-
a
)
*
(
b
-
c
))},
center
:
function
(
a
){
a
.
computeBoundingBox
();
var
b
=
new
THREE
.
Vector3
;
b
.
x
=-
0.5
*
(
a
.
boundingBox
.
x
[
1
]
+
a
.
boundingBox
.
x
[
0
]);
b
.
y
=-
0.5
*
(
a
.
boundingBox
.
y
[
1
]
+
a
.
boundingBox
.
y
[
0
]);
b
.
z
=-
0.5
*
(
a
.
boundingBox
.
z
[
1
]
+
a
.
boundingBox
.
z
[
0
]);
a
.
applyMatrix
((
new
THREE
.
Matrix4
).
setTranslation
(
b
.
x
,
b
.
y
,
b
.
z
));
a
.
computeBoundingBox
();
return
b
},
normalizeUVs
:
function
(
a
){
for
(
var
a
=
a
.
faceVertexUvs
[
0
],
b
=
0
,
c
=
a
.
length
;
b
<
c
;
b
++
)
for
(
var
d
=
a
[
b
],
e
=
0
,
g
=
d
.
length
;
e
<
g
;
e
++
)
d
[
e
].
u
!==
1
&&
(
d
[
e
].
u
-=
Math
.
floor
(
d
[
e
].
u
)),
d
[
e
].
v
!==
1
&&
(
d
[
e
].
v
-=
Math
.
floor
(
d
[
e
].
v
))}};
THREE
.
GeometryUtils
.
random
=
THREE
.
Math
.
random16
;
THREE
.
GeometryUtils
.
__v1
=
new
THREE
.
Vector3
;
THREE
.
ImageUtils
=
{
crossOrigin
:
""
,
loadTexture
:
function
(
a
,
b
,
c
){
var
d
=
new
Image
,
e
=
new
THREE
.
Texture
(
d
,
b
);
d
.
onload
=
function
(){
e
.
needsUpdate
=!
0
;
c
&&
c
(
this
)};
d
.
crossOrigin
=
this
.
crossOrigin
;
d
.
src
=
a
;
return
e
},
loadTextureCube
:
function
(
a
,
b
,
c
){
var
d
,
e
=
[],
g
=
new
THREE
.
Texture
(
e
,
b
),
b
=
e
.
loadCount
=
0
;
for
(
d
=
a
.
length
;
b
<
d
;
++
b
)
e
[
b
]
=
new
Image
,
e
[
b
].
onload
=
function
(){
e
.
loadCount
+=
1
;
if
(
e
.
loadCount
===
6
)
g
.
needsUpdate
=!
0
;
c
&&
c
(
this
)},
e
[
b
].
crossOrigin
=
""
,
e
[
b
].
src
=
a
[
b
];
return
g
},
getNormalMap
:
function
(
a
,
b
){
var
c
=
function
(
a
){
var
b
=
Math
.
sqrt
(
a
[
0
]
*
a
[
0
]
+
a
[
1
]
*
a
[
1
]
+
a
[
2
]
*
a
[
2
]);
return
[
a
[
0
]
/
b
,
a
[
1
]
/
b
,
a
[
2
]
/
b
]};
b
|=
1
;
var
d
=
a
.
width
,
e
=
a
.
height
,
g
=
document
.
createElement
(
"
canvas
"
);
g
.
width
=
d
;
g
.
height
=
e
;
var
f
=
g
.
getContext
(
"
2d
"
);
f
.
drawImage
(
a
,
0
,
0
);
for
(
var
h
=
f
.
getImageData
(
0
,
0
,
d
,
e
).
data
,
i
=
f
.
createImageData
(
d
,
e
),
k
=
i
.
data
,
j
=
0
;
j
<
d
;
j
++
)
for
(
var
q
=
1
;
q
<
e
;
q
++
){
var
p
=
q
-
1
<
0
?
e
-
1
:
q
-
1
,
m
=
(
q
+
1
)
%
e
,
l
=
j
-
1
<
0
?
d
-
1
:
j
-
1
,
n
=
(
j
+
1
)
%
d
,
r
=
[],
o
=
[
0
,
0
,
h
[(
q
*
d
+
j
)
*
4
]
/
255
*
b
];
r
.
push
([
-
1
,
0
,
h
[(
q
*
d
+
l
)
*
4
]
/
255
*
b
]);
r
.
push
([
-
1
,
-
1
,
h
[(
p
*
d
+
l
)
*
4
]
/
255
*
b
]);
r
.
push
([
0
,
-
1
,
h
[(
p
*
d
+
j
)
*
4
]
/
255
*
b
]);
r
.
push
([
1
,
...
...
examples/webgl_loader_json_blender.html
浏览文件 @
b1ef3409
...
...
@@ -125,7 +125,7 @@
scene
.
add
(
new
THREE
.
AmbientLight
(
0xcccccc
)
);
pointLight
=
new
THREE
.
PointLight
(
0xff4400
,
2
,
6
0
);
pointLight
=
new
THREE
.
PointLight
(
0xff4400
,
5
,
3
0
);
pointLight
.
position
.
set
(
5
,
0
,
0
);
scene
.
add
(
pointLight
);
...
...
src/extras/GeometryUtils.js
浏览文件 @
b1ef3409
...
...
@@ -238,7 +238,7 @@ THREE.GeometryUtils = {
// (uniform distribution)
// http://www.cgafaq.info/wiki/Random_Point_In_Triangle
randomPointInTriangle
:
function
(
vectorA
,
vectorB
,
vectorC
)
{
randomPointInTriangle
:
function
(
vectorA
,
vectorB
,
vectorC
)
{
var
a
,
b
,
c
,
point
=
new
THREE
.
Vector3
(),
...
...
@@ -276,7 +276,7 @@ THREE.GeometryUtils = {
// Get random point in face (triangle / quad)
// (uniform distribution)
randomPointInFace
:
function
(
face
,
geometry
,
useCachedAreas
)
{
randomPointInFace
:
function
(
face
,
geometry
,
useCachedAreas
)
{
var
vA
,
vB
,
vC
,
vD
;
...
...
@@ -343,7 +343,7 @@ THREE.GeometryUtils = {
// - find corresponding place in area array by binary search
// - get random point in face
randomPointsInGeometry
:
function
(
geometry
,
n
)
{
randomPointsInGeometry
:
function
(
geometry
,
n
)
{
var
face
,
i
,
faces
=
geometry
.
faces
,
...
...
@@ -456,7 +456,7 @@ THREE.GeometryUtils = {
// Get triangle area (by Heron's formula)
// http://en.wikipedia.org/wiki/Heron%27s_formula
triangleArea
:
function
(
vectorA
,
vectorB
,
vectorC
)
{
triangleArea
:
function
(
vectorA
,
vectorB
,
vectorC
)
{
var
s
,
a
,
b
,
c
,
tmp
=
THREE
.
GeometryUtils
.
__v1
;
...
...
@@ -478,23 +478,20 @@ THREE.GeometryUtils = {
// Center geometry so that 0,0,0 is in center of bounding box
center
:
function
(
geometry
)
{
center
:
function
(
geometry
)
{
geometry
.
computeBoundingBox
();
var
matrix
=
new
THREE
.
Matrix4
();
var
offset
=
new
THREE
.
Vector3
();
var
dx
=
-
0.5
*
(
geometry
.
boundingBox
.
x
[
1
]
+
geometry
.
boundingBox
.
x
[
0
]
);
var
dy
=
-
0.5
*
(
geometry
.
boundingBox
.
y
[
1
]
+
geometry
.
boundingBox
.
y
[
0
]
);
var
dz
=
-
0.5
*
(
geometry
.
boundingBox
.
z
[
1
]
+
geometry
.
boundingBox
.
z
[
0
]
);
matrix
.
setTranslation
(
dx
,
dy
,
dz
);
geometry
.
applyMatrix
(
matrix
);
offset
.
x
=
-
0.5
*
(
geometry
.
boundingBox
.
x
[
1
]
+
geometry
.
boundingBox
.
x
[
0
]
);
offset
.
y
=
-
0.5
*
(
geometry
.
boundingBox
.
y
[
1
]
+
geometry
.
boundingBox
.
y
[
0
]
);
offset
.
z
=
-
0.5
*
(
geometry
.
boundingBox
.
z
[
1
]
+
geometry
.
boundingBox
.
z
[
0
]
);
geometry
.
applyMatrix
(
new
THREE
.
Matrix4
().
setTranslation
(
offset
.
x
,
offset
.
y
,
offset
.
z
)
);
geometry
.
computeBoundingBox
();
return
new
THREE
.
Vector3
(
dx
,
dy
,
dz
)
;
return
offset
;
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录