Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
9707674d
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,发现更多精彩内容 >>
提交
9707674d
编写于
8月 14, 2017
作者:
F
Fernando Serrano
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix non pbr materials, add more geometries to example
上级
8242d25e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
99 addition
and
97 deletion
+99
-97
examples/gltf_exporter.html
examples/gltf_exporter.html
+73
-64
examples/js/exporters/GLTFExporter.js
examples/js/exporters/GLTFExporter.js
+26
-33
未找到文件。
examples/gltf_exporter.html
浏览文件 @
9707674d
...
...
@@ -58,46 +58,65 @@
animate
();
function
init
()
{
var
object
;
container
=
document
.
createElement
(
'
div
'
);
document
.
body
.
appendChild
(
container
);
camera
=
new
THREE
.
PerspectiveCamera
(
45
,
window
.
innerWidth
/
window
.
innerHeight
,
1
,
2000
);
camera
.
position
.
y
=
400
;
camera
.
name
=
"
PerspectiveCamera
"
;
scene1
=
new
THREE
.
Scene
();
scene1
.
name
=
'
Scene1
'
;
var
light
,
object
;
// ---------------------------------------------------------------------
// Perspective Camera
// ---------------------------------------------------------------------
camera
=
new
THREE
.
PerspectiveCamera
(
45
,
window
.
innerWidth
/
window
.
innerHeight
,
1
,
2000
);
camera
.
position
.
set
(
600
,
400
,
0
);
camera
.
name
=
"
PerspectiveCamera
"
;
scene1
.
add
(
camera
);
// ---------------------------------------------------------------------
// Ambient light
// ---------------------------------------------------------------------
scene1
.
add
(
new
THREE
.
AmbientLight
(
0xffffff
)
);
light
=
new
THREE
.
DirectionalLight
(
0xffffff
);
// ---------------------------------------------------------------------
// DirectLight
// ---------------------------------------------------------------------
var
light
=
new
THREE
.
DirectionalLight
(
0xffffff
);
light
.
position
.
set
(
1
,
1
,
0
);
scene1
.
add
(
light
);
var
mapGrid
=
new
THREE
.
TextureLoader
().
load
(
'
textures/UV_Grid_Sm.jpg
'
);
mapGrid
.
wrapS
=
mapGrid
.
wrapT
=
THREE
.
RepeatWrapping
;
mapGrid
.
anisotropy
=
16
;
// var material = new THREE.MeshLambertMaterial( { map: map, side: THREE.DoubleSide } )
// ---------------------------------------------------------------------
// Grid
// ---------------------------------------------------------------------
var
gridHelper
=
new
THREE
.
GridHelper
(
2000
,
20
);
gridHelper
.
position
.
y
=
-
50
;
// scene1.add( gridHelper );
gridHelper
.
name
=
"
Grid
"
;
scene1
.
add
(
gridHelper
);
// ---------------------------------------------------------------------
// Axis
// ---------------------------------------------------------------------
var
axis
=
new
THREE
.
AxisHelper
(
500
);
axis
.
name
=
"
AxisHelper
"
;
scene1
.
add
(
axis
);
// ---------------------------------------------------------------------
// Simple geometry with basic material
// ---------------------------------------------------------------------
// Icosahedron
var
mapGrid
=
new
THREE
.
TextureLoader
().
load
(
'
textures/UV_Grid_Sm.jpg
'
);
mapGrid
.
wrapS
=
mapGrid
.
wrapT
=
THREE
.
RepeatWrapping
;
var
material
=
new
THREE
.
MeshBasicMaterial
(
{
color
:
0xff0000
color
:
0xffffff
,
map
:
mapGrid
}
);
object
=
new
THREE
.
Mesh
(
new
THREE
.
IcosahedronGeometry
(
75
,
0
),
material
);
object
.
position
.
set
(
-
200
,
0
,
200
);
// scene1.add( object );
object
.
name
=
'
Icosahedron
'
;
scene1
.
add
(
object
);
// Octahedron
material
=
new
THREE
.
MeshBasicMaterial
(
{
...
...
@@ -106,17 +125,20 @@
}
);
object
=
new
THREE
.
Mesh
(
new
THREE
.
OctahedronGeometry
(
75
,
1
),
material
);
object
.
position
.
set
(
0
,
0
,
200
);
// scene1.add( object );
object
.
name
=
'
Octahedron
'
;
scene1
.
add
(
object
);
// Tetrahedron
material
=
new
THREE
.
MeshBasicMaterial
(
{
color
:
0xffffff
,
map
:
mapGrid
color
:
0xff0000
,
transparent
:
true
,
opacity
:
0.5
}
);
object
=
new
THREE
.
Mesh
(
new
THREE
.
TetrahedronGeometry
(
75
,
0
),
material
);
object
.
position
.
set
(
200
,
0
,
200
);
// scene1.add( object );
object
.
name
=
'
Tetrahedron
'
;
scene1
.
add
(
object
);
// ---------------------------------------------------------------------
// Buffered geometry primitives
...
...
@@ -131,7 +153,7 @@
object
=
new
THREE
.
Mesh
(
new
THREE
.
SphereBufferGeometry
(
70
,
10
,
10
),
material
);
object
.
position
.
set
(
0
,
0
,
0
);
object
.
name
=
"
Sphere
"
;
//
scene1.add( object );
scene1
.
add
(
object
);
// Cylinder
material
=
new
THREE
.
MeshStandardMaterial
(
{
...
...
@@ -141,16 +163,17 @@
object
=
new
THREE
.
Mesh
(
new
THREE
.
CylinderBufferGeometry
(
10
,
80
,
100
),
material
);
object
.
position
.
set
(
200
,
0
,
0
);
object
.
name
=
"
Cylinder
"
;
//
scene1.add( object );
scene1
.
add
(
object
);
// TorusKnot
material
=
new
THREE
.
MeshStandardMaterial
(
{
color
:
0xff0000
color
:
0xff0000
,
roughness
:
1
}
);
object
=
new
THREE
.
Mesh
(
new
THREE
.
TorusKnotGeometry
(
60
,
10
,
2
0
,
10
),
material
);
object
=
new
THREE
.
Mesh
(
new
THREE
.
TorusKnotGeometry
(
50
,
15
,
4
0
,
10
),
material
);
object
.
position
.
set
(
-
200
,
0
,
0
);
object
.
name
=
"
Cylinder
"
;
//
scene1.add( object );
scene1
.
add
(
object
);
// ---------------------------------------------------------------------
...
...
@@ -162,7 +185,7 @@
object
=
new
THREE
.
Mesh
(
new
THREE
.
BoxBufferGeometry
(
40
,
100
,
100
),
material
);
object
.
position
.
set
(
-
200
,
0
,
400
);
object
.
name
=
"
Cube
"
;
//
scene1.add( object );
scene1
.
add
(
object
);
object2
=
new
THREE
.
Mesh
(
new
THREE
.
BoxBufferGeometry
(
40
,
40
,
40
,
2
,
2
,
2
),
material
);
object2
.
position
.
set
(
0
,
0
,
50
);
...
...
@@ -176,7 +199,7 @@
// ---------------------------------------------------------------------
group1
=
new
THREE
.
Group
();
group1
.
name
=
"
Group
"
;
//
scene1.add( group1 );
scene1
.
add
(
group1
);
group2
=
new
THREE
.
Group
();
group2
.
name
=
"
subGroup
"
;
...
...
@@ -237,7 +260,6 @@
geometry
.
addAttribute
(
'
position
'
,
new
THREE
.
BufferAttribute
(
positions
,
3
)
);
object
=
new
THREE
.
Line
(
geometry
,
new
THREE
.
LineBasicMaterial
(
{
color
:
0xffff00
}
)
);
object
.
position
.
set
(
-
50
,
0
,
-
200
);
scene1
.
add
(
object
);
...
...
@@ -262,54 +284,53 @@
scene1
.
add
(
object
);
// ---------------------------------------------------------------------
// Axis
// ---------------------------------------------------------------------
var
axis
=
new
THREE
.
AxisHelper
(
100
);
axis
.
name
=
"
AxisHelper
"
;
//scene1.add( axis );
// ---------------------------------------------------------------------
// Points
// ---------------------------------------------------------------------
var
NUM_POINTS
=
100
;
var
pointsArray
=
new
Float32Array
(
NUM_POINTS
*
3
);
for
(
var
i
=
0
;
i
<
NUM_POINTS
;
i
++
)
{
pointsArray
[
3
*
i
]
=
Math
.
random
()
*
100
;
var
numPoints
=
100
;
var
pointsArray
=
new
Float32Array
(
numPoints
*
3
);
for
(
var
i
=
0
;
i
<
numPoints
;
i
++
)
{
pointsArray
[
3
*
i
]
=
-
50
+
Math
.
random
()
*
100
;
pointsArray
[
3
*
i
+
1
]
=
Math
.
random
()
*
100
;
pointsArray
[
3
*
i
+
2
]
=
Math
.
random
()
*
100
;
pointsArray
[
3
*
i
+
2
]
=
-
50
+
Math
.
random
()
*
100
;
}
pointsGeo
=
new
THREE
.
BufferGeometry
();
pointsGeo
.
addAttribute
(
'
position
'
,
new
THREE
.
BufferAttribute
(
pointsArray
,
3
).
setDynamic
(
true
)
);
var
pointsMaterial
=
new
THREE
.
PointsMaterial
(
{
color
:
0xffff00
}
);
var
pointsMaterial
=
new
THREE
.
PointsMaterial
(
{
color
:
0xffff00
,
size
:
10
}
);
var
points
=
new
THREE
.
Points
(
pointsGeo
,
pointsMaterial
);
points
.
name
=
"
Points
"
;
// scene1.add( points );
scene1
.
add
(
camera
);
points
.
position
.
set
(
-
200
,
0
,
-
200
);
scene1
.
add
(
points
);
// ---------------------------------------------------------------------
// Ortho camera
// ---------------------------------------------------------------------
var
cameraOrtho
=
new
THREE
.
OrthographicCamera
(
window
.
innerWidth
/
-
2
,
window
.
innerWidth
/
2
,
window
.
innerHeight
/
2
,
window
.
innerHeight
/
-
2
,
-
10
,
10
);
scene1
.
add
(
cameraOrtho
);
cameraOrtho
.
name
=
'
OrthographicCamera
'
;
/*
material
=
new
THREE
.
MeshStandardMaterial
(
{
color
:
0xffff00
,
metalness
:
0.5
,
roughness
:
1.0
,
side
:
THREE
.
DoubleSide
}
);
object
=
new
THREE
.
Mesh
(
new
THREE
.
CircleGeometry
(
50
,
20
,
0
,
Math
.
PI
*
2
),
material
);
object.position.set(
0, 0,
0 );
object
.
position
.
set
(
200
,
0
,
60
0
);
scene1
.
add
(
object
);
object
=
new
THREE
.
Mesh
(
new
THREE
.
RingGeometry
(
10
,
50
,
20
,
5
,
0
,
Math
.
PI
*
2
),
material
);
object.position.set(
200, 0,
0 );
object
.
position
.
set
(
0
,
0
,
60
0
);
scene1
.
add
(
object
);
object
=
new
THREE
.
Mesh
(
new
THREE
.
CylinderGeometry
(
25
,
75
,
100
,
40
,
5
),
material
);
object.position.set(
400, 0,
0 );
object
.
position
.
set
(
-
200
,
0
,
60
0
);
scene1
.
add
(
object
);
*/
//
/*
var
points
=
[];
for
(
var
i
=
0
;
i
<
50
;
i
++
)
{
...
...
@@ -319,25 +340,13 @@
}
object
=
new
THREE
.
Mesh
(
new
THREE
.
LatheGeometry
(
points
,
20
),
material
);
object.position.set(
-400, 0, -2
00 );
object
.
position
.
set
(
200
,
0
,
4
00
);
scene1
.
add
(
object
);
object = new THREE.Mesh( new THREE.TorusGeometry( 50, 20, 20, 20 ), material );
object.position.set( -200, 0, -200 );
scene1.add( object );
object = new THREE.Mesh( new THREE.TorusKnotGeometry( 50, 10, 50, 20 ), material );
object.position.set( 0, 0, -200 );
scene1.add( object );
object = new THREE.AxisHelper( 50 );
object.position.set( 200, 0, -200 );
scene1.add( object );
object = new THREE.ArrowHelper( new THREE.Vector3( 0, 1, 0 ), new THREE.Vector3( 0, 0, 0 ), 50 );
object
=
new
THREE
.
ArrowHelper
(
new
THREE
.
Vector3
(
0
,
1
,
0
),
new
THREE
.
Vector3
(
0
,
0
,
0
),
50
,
0xffff00
,
20
,
10
);
object
.
position
.
set
(
400
,
0
,
-
200
);
scene1
.
add
(
object
);
*/
var
scene2
=
new
THREE
.
Scene
();
object
=
new
THREE
.
Mesh
(
new
THREE
.
BoxBufferGeometry
(
100
,
100
,
100
),
material
);
...
...
examples/js/exporters/GLTFExporter.js
浏览文件 @
9707674d
...
...
@@ -286,62 +286,55 @@ THREE.GLTFExporter.prototype = {
}
// @QUESTION Should we avoid including any attribute that has the default value?
var
gltfMaterial
=
{};
var
gltfMaterial
=
{
pbrMetallicRoughness
:
{}
};
if
(
material
instanceof
THREE
.
MeshStandardMaterial
)
{
// pbrMetallicRoughness.baseColorFactor
var
color
=
material
.
color
.
toArray
().
concat
(
[
material
.
opacity
]
);
if
(
!
equalArray
(
color
,
[
1
,
1
,
1
,
1
]
)
)
{
gltfMaterial
.
pbrMetallicRoughness
=
{
baseColorFactor
:
material
.
color
.
toArray
().
concat
(
[
material
.
opacity
]
),
metallicFactor
:
material
.
metalness
,
roughnessFactor
:
material
.
roughness
};
gltfMaterial
.
pbrMetallicRoughness
.
baseColorFactor
=
color
;
}
if
(
material
instanceof
THREE
.
MeshBasicMaterial
||
material
instanceof
THREE
.
LineBasicMaterial
||
material
instanceof
THREE
.
PointsMaterial
)
{
if
(
material
instanceof
THREE
.
MeshStandardMaterial
)
{
// emissiveFactor
var
color
=
material
.
color
.
toArray
();
if
(
!
equalArray
(
color
,
[
0
,
0
,
0
]
)
)
{
gltfMaterial
.
pbrMetallicRoughness
.
metallicFactor
=
material
.
metalness
;
gltfMaterial
.
pbrMetallicRoughness
.
roughnessFactor
=
material
.
roughness
;
gltfMaterial
.
emissiveFactor
=
color
;
}
else
{
}
gltfMaterial
.
pbrMetallicRoughness
.
metallicFactor
=
0.5
;
gltfMaterial
.
pbrMetallicRoughness
.
roughnessFactor
=
0.5
;
// emissiveTexture
if
(
material
.
map
)
{
}
gltfMaterial
.
emissiveTexture
=
{
// pbrMetallicRoughness.baseColorTexture
if
(
material
.
map
)
{
index
:
processTexture
(
material
.
map
),
texCoord
:
0
// @FIXME
gltfMaterial
.
pbrMetallicRoughness
.
baseColorTexture
=
{
index
:
processTexture
(
material
.
map
),
texCoord
:
0
// @FIXME
};
};
}
}
if
(
material
instanceof
THREE
.
MeshBasicMaterial
||
material
instanceof
THREE
.
LineBasicMaterial
||
material
instanceof
THREE
.
PointsMaterial
)
{
}
else
{
// emissiveFactor
var
emissive
=
material
.
emissive
.
toArray
();
var
emissive
=
material
.
emissive
.
clone
().
multiplyScalar
(
material
.
emissiveIntensity
).
toArray
();
if
(
!
equalArray
(
emissive
,
[
0
,
0
,
0
]
)
)
{
gltfMaterial
.
emissiveFactor
=
emissive
;
}
// pbrMetallicRoughness.baseColorTexture
if
(
material
.
map
)
{
gltfMaterial
.
pbrMetallicRoughness
.
baseColorTexture
=
{
index
:
processTexture
(
material
.
map
),
texCoord
:
0
// @FIXME
};
}
// emissiveTexture
if
(
material
.
emissiveMap
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录