Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
be76904d
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,发现更多精彩内容 >>
提交
be76904d
编写于
5月 03, 2019
作者:
K
Kai Salmen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Backported onError function usage from OBJLoader2/Parser V3. Unified callback naming
Versions are only printed once in the logs
上级
914c255e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
131 addition
and
78 deletion
+131
-78
examples/js/loaders/LoaderSupport.js
examples/js/loaders/LoaderSupport.js
+9
-6
examples/js/loaders/OBJLoader2.js
examples/js/loaders/OBJLoader2.js
+109
-68
examples/webgl_loader_obj2_meshspray.html
examples/webgl_loader_obj2_meshspray.html
+13
-4
未找到文件。
examples/js/loaders/LoaderSupport.js
浏览文件 @
be76904d
...
...
@@ -347,7 +347,6 @@ THREE.LoaderSupport.PrepData.prototype = {
* @class
*/
THREE
.
LoaderSupport
.
MeshBuilder
=
function
()
{
console
.
info
(
'
Using THREE.LoaderSupport.MeshBuilder version:
'
+
THREE
.
LoaderSupport
.
MeshBuilder
.
LOADER_MESH_BUILDER_VERSION
);
this
.
validator
=
THREE
.
LoaderSupport
.
Validator
;
this
.
logging
=
{
...
...
@@ -359,6 +358,8 @@ THREE.LoaderSupport.MeshBuilder = function() {
this
.
materials
=
{};
};
THREE
.
LoaderSupport
.
MeshBuilder
.
LOADER_MESH_BUILDER_VERSION
=
'
1.3.1
'
;
console
.
info
(
'
Using THREE.LoaderSupport.MeshBuilder version:
'
+
THREE
.
LoaderSupport
.
MeshBuilder
.
LOADER_MESH_BUILDER_VERSION
);
THREE
.
LoaderSupport
.
MeshBuilder
.
prototype
=
{
...
...
@@ -715,7 +716,6 @@ THREE.LoaderSupport.MeshBuilder.prototype = {
* @class
*/
THREE
.
LoaderSupport
.
WorkerSupport
=
function
()
{
console
.
info
(
'
Using THREE.LoaderSupport.WorkerSupport version:
'
+
THREE
.
LoaderSupport
.
WorkerSupport
.
WORKER_SUPPORT_VERSION
);
this
.
logging
=
{
enabled
:
true
,
debug
:
false
...
...
@@ -726,6 +726,8 @@ THREE.LoaderSupport.WorkerSupport = function () {
};
THREE
.
LoaderSupport
.
WorkerSupport
.
WORKER_SUPPORT_VERSION
=
'
2.3.0
'
;
console
.
info
(
'
Using THREE.LoaderSupport.WorkerSupport version:
'
+
THREE
.
LoaderSupport
.
WorkerSupport
.
WORKER_SUPPORT_VERSION
);
THREE
.
LoaderSupport
.
WorkerSupport
.
prototype
=
{
...
...
@@ -1285,10 +1287,10 @@ THREE.LoaderSupport.WorkerRunnerRefImpl.prototype = {
var
self
=
this
.
getParentScope
();
var
callbacks
=
{
callback
MeshBuilder
:
function
(
payload
)
{
callback
OnAssetAvailable
:
function
(
payload
)
{
self
.
postMessage
(
payload
);
},
callbackProgress
:
function
(
text
)
{
callback
On
Progress
:
function
(
text
)
{
if
(
payload
.
logging
.
enabled
&&
payload
.
logging
.
debug
)
console
.
debug
(
'
WorkerRunner: progress:
'
+
text
);
}
};
...
...
@@ -1304,7 +1306,7 @@ THREE.LoaderSupport.WorkerRunnerRefImpl.prototype = {
if
(
payload
.
logging
.
enabled
)
console
.
log
(
'
WorkerRunner: Run complete!
'
);
callbacks
.
callback
MeshBuilder
(
{
callbacks
.
callback
OnAssetAvailable
(
{
cmd
:
'
complete
'
,
msg
:
'
WorkerRunner completed run.
'
}
);
...
...
@@ -1414,7 +1416,6 @@ THREE.LoaderSupport.WorkerSupport.NodeLoaderWorker.prototype.initWorker = functi
* @param {string} classDef Class definition to be used for construction
*/
THREE
.
LoaderSupport
.
WorkerDirector
=
function
(
classDef
)
{
console
.
info
(
'
Using THREE.LoaderSupport.WorkerDirector version:
'
+
THREE
.
LoaderSupport
.
WorkerDirector
.
LOADER_WORKER_DIRECTOR_VERSION
);
this
.
logging
=
{
enabled
:
true
,
debug
:
false
...
...
@@ -1443,6 +1444,8 @@ THREE.LoaderSupport.WorkerDirector = function ( classDef ) {
THREE
.
LoaderSupport
.
WorkerDirector
.
LOADER_WORKER_DIRECTOR_VERSION
=
'
2.3.0
'
;
THREE
.
LoaderSupport
.
WorkerDirector
.
MAX_WEB_WORKER
=
16
;
THREE
.
LoaderSupport
.
WorkerDirector
.
MAX_QUEUE_SIZE
=
2048
;
console
.
info
(
'
Using THREE.LoaderSupport.WorkerDirector version:
'
+
THREE
.
LoaderSupport
.
WorkerDirector
.
LOADER_WORKER_DIRECTOR_VERSION
);
THREE
.
LoaderSupport
.
WorkerDirector
.
prototype
=
{
...
...
examples/js/loaders/OBJLoader2.js
浏览文件 @
be76904d
...
...
@@ -17,8 +17,6 @@ if ( THREE.LoaderSupport === undefined ) console.error( '"THREE.LoaderSupport" i
*/
THREE
.
OBJLoader2
=
function
(
manager
)
{
console
.
info
(
'
Using THREE.OBJLoader2 version:
'
+
THREE
.
OBJLoader2
.
OBJLOADER2_VERSION
);
this
.
manager
=
THREE
.
LoaderSupport
.
Validator
.
verifyInput
(
manager
,
THREE
.
DefaultLoadingManager
);
this
.
logging
=
{
enabled
:
true
,
...
...
@@ -40,8 +38,9 @@ THREE.OBJLoader2 = function ( manager ) {
this
.
workerSupport
=
new
THREE
.
LoaderSupport
.
WorkerSupport
();
this
.
terminateWorkerOnLoad
=
true
;
};
THREE
.
OBJLoader2
.
OBJLOADER2_VERSION
=
'
2.5.1
'
;
console
.
info
(
'
Using THREE.OBJLoader2 version:
'
+
THREE
.
OBJLoader2
.
OBJLOADER2_VERSION
);
THREE
.
OBJLoader2
.
prototype
=
{
...
...
@@ -174,19 +173,12 @@ THREE.OBJLoader2.prototype = {
if
(
this
.
logging
.
enabled
&&
this
.
logging
.
debug
)
console
.
debug
(
content
);
},
_onError
:
function
(
event
)
{
var
output
=
'
Error occurred while downloading!
'
;
if
(
event
.
currentTarget
&&
event
.
currentTarget
.
statusText
!==
null
)
{
_onError
:
function
(
errorMessage
)
{
if
(
this
.
logging
.
enabled
&&
this
.
logging
.
debug
)
{
output
+=
'
\n
url:
'
+
event
.
currentTarget
.
responseURL
+
'
\n
status:
'
+
event
.
currentTarget
.
statusText
;
console
.
log
(
errorMessage
)
;
}
this
.
onProgress
(
'
error
'
,
output
,
-
1
);
this
.
_throwError
(
output
);
},
_throwError
:
function
(
errorMessage
)
{
if
(
THREE
.
LoaderSupport
.
Validator
.
isValid
(
this
.
callbacks
.
onReportError
)
)
{
this
.
callbacks
.
onReportError
(
errorMessage
);
...
...
@@ -216,9 +208,18 @@ THREE.OBJLoader2.prototype = {
_loadObj
:
function
(
resource
,
onLoad
,
onProgress
,
onError
,
onMeshAlter
,
useAsync
)
{
var
scope
=
this
;
if
(
!
THREE
.
LoaderSupport
.
Validator
.
isValid
(
onError
)
)
{
onError
=
function
(
event
)
{
scope
.
_onError
(
event
);
}
var
errorMessage
=
event
;
if
(
event
.
currentTarget
&&
event
.
currentTarget
.
statusText
!==
null
)
{
errorMessage
=
'
Error occurred while downloading!
\n
url:
'
+
event
.
currentTarget
.
responseURL
+
'
\n
status:
'
+
event
.
currentTarget
.
statusText
;
}
scope
.
_onError
(
errorMessage
);
};
}
// fast-fail
...
...
@@ -365,11 +366,15 @@ THREE.OBJLoader2.prototype = {
scope
.
loaderRootNode
.
add
(
mesh
);
}
};
parser
.
setCallback
MeshBuilder
(
onMeshLoaded
);
parser
.
setCallback
OnAssetAvailable
(
onMeshLoaded
);
var
onProgressScoped
=
function
(
text
,
numericalValue
)
{
scope
.
onProgress
(
'
progressParse
'
,
text
,
numericalValue
);
};
parser
.
setCallbackProgress
(
onProgressScoped
);
parser
.
setCallbackOnProgress
(
onProgressScoped
);
var
onErrorScoped
=
function
(
message
)
{
scope
.
_onError
(
message
);
};
parser
.
setCallbackOnError
(
onErrorScoped
);
if
(
content
instanceof
ArrayBuffer
||
content
instanceof
Uint8Array
)
{
...
...
@@ -383,7 +388,7 @@ THREE.OBJLoader2.prototype = {
}
else
{
this
.
_
throw
Error
(
'
Provided content was neither of type String nor Uint8Array! Aborting...
'
);
this
.
_
on
Error
(
'
Provided content was neither of type String nor Uint8Array! Aborting...
'
);
}
if
(
this
.
logging
.
enabled
)
console
.
timeEnd
(
'
OBJLoader2 parse:
'
+
this
.
modelName
);
...
...
@@ -439,7 +444,6 @@ THREE.OBJLoader2.prototype = {
workerCode
+=
'
* This code was constructed by OBJLoader2 buildCode.
\n
'
;
workerCode
+=
'
*/
\n\n
'
;
workerCode
+=
'
THREE = { LoaderSupport: {}, OBJLoader2: {} };
\n\n
'
;
workerCode
+=
codeSerializer
.
serializeObject
(
'
THREE.LoaderSupport.Validator
'
,
THREE
.
LoaderSupport
.
Validator
);
workerCode
+=
codeSerializer
.
serializeClass
(
'
THREE.OBJLoader2.Parser
'
,
THREE
.
OBJLoader2
.
Parser
);
return
workerCode
;
...
...
@@ -546,7 +550,7 @@ THREE.OBJLoader2.prototype = {
}
else
{
this
.
_throw
Error
(
'
Unable to parse mtl as it it seems to be neither a String, an Array or an ArrayBuffer!
'
);
scope
.
_on
Error
(
'
Unable to parse mtl as it it seems to be neither a String, an Array or an ArrayBuffer!
'
);
}
}
...
...
@@ -595,8 +599,11 @@ THREE.OBJLoader2.prototype = {
* @class
*/
THREE
.
OBJLoader2
.
Parser
=
function
()
{
this
.
callbackProgress
=
null
;
this
.
callbackMeshBuilder
=
null
;
this
.
callbacks
=
{
onProgress
:
null
,
onAssetAvailable
:
null
,
onError
:
null
};
this
.
contentRef
=
null
;
this
.
legacyMode
=
false
;
...
...
@@ -694,29 +701,61 @@ THREE.OBJLoader2.Parser.prototype = {
},
setMaterials
:
function
(
materials
)
{
this
.
materials
=
THREE
.
LoaderSupport
.
Validator
.
verifyInput
(
materials
,
this
.
materials
);
this
.
materials
=
THREE
.
LoaderSupport
.
Validator
.
verifyInput
(
this
.
materials
,
{}
);
if
(
materials
===
undefined
||
materials
===
null
)
return
;
for
(
var
materialName
in
materials
)
{
if
(
materials
.
hasOwnProperty
(
materialName
)
)
{
this
.
materials
[
materialName
]
=
materials
[
materialName
];
}
}
},
setCallback
MeshBuilder
:
function
(
callbackMeshBuilder
)
{
if
(
!
THREE
.
LoaderSupport
.
Validator
.
isValid
(
callbackMeshBuilder
)
)
{
setCallback
OnAssetAvailable
:
function
(
onAssetAvailable
)
{
if
(
onAssetAvailable
!==
null
&&
onAssetAvailable
!==
undefined
)
{
this
.
_throwError
(
'
Unable to run as no "MeshBuilder" callback is set.
'
)
;
this
.
callbacks
.
onAssetAvailable
=
onAssetAvailable
;
}
this
.
callbackMeshBuilder
=
callbackMeshBuilder
;
},
setCallbackProgress
:
function
(
callbackProgress
)
{
this
.
callbackProgress
=
callbackProgress
;
setCallbackOnProgress
:
function
(
onProgress
)
{
if
(
onProgress
!==
null
&&
onProgress
!==
undefined
)
{
this
.
callbacks
.
onProgress
=
onProgress
;
}
},
setCallbackOnError
:
function
(
onError
)
{
if
(
onError
!==
null
&&
onError
!==
undefined
)
{
this
.
callbacks
.
onError
=
onError
;
}
},
setLogging
:
function
(
enabled
,
debug
)
{
this
.
logging
.
enabled
=
enabled
===
true
;
this
.
logging
.
debug
=
debug
===
true
;
},
configure
:
function
()
{
if
(
this
.
callbacks
.
onAssetAvailable
===
null
)
{
var
errorMessage
=
'
Unable to run as no callback for building meshes is set.
'
;
if
(
this
.
callbacks
.
onError
!==
null
)
{
this
.
callbacks
.
onError
(
errorMessage
);
}
else
{
throw
errorMessage
;
}
}
this
.
pushSmoothingGroup
(
1
);
if
(
this
.
logging
.
enabled
)
{
...
...
@@ -729,9 +768,16 @@ THREE.OBJLoader2.Parser.prototype = {
+
'
\n\t
materialPerSmoothingGroup:
'
+
this
.
materialPerSmoothingGroup
+
'
\n\t
useOAsMesh:
'
+
this
.
useOAsMesh
+
'
\n\t
useIndices:
'
+
this
.
useIndices
+
'
\n\t
disregardNormals:
'
+
this
.
disregardNormals
+
'
\n\t
callbackMeshBuilderName:
'
+
this
.
callbackMeshBuilder
.
name
+
'
\n\t
callbackProgressName:
'
+
this
.
callbackProgress
.
name
;
+
'
\n\t
disregardNormals:
'
+
this
.
disregardNormals
;
if
(
this
.
callbacks
.
onProgress
!==
null
)
{
printedConfig
+=
'
\n\t
callbacks.onProgress:
'
+
this
.
callbacks
.
onProgress
.
name
;
}
if
(
this
.
callbacks
.
onAssetAvailable
!==
null
)
{
printedConfig
+=
'
\n\t
callbacks.onAssetAvailable:
'
+
this
.
callbacks
.
onAssetAvailable
.
name
;
}
if
(
this
.
callbacks
.
onError
!==
null
)
{
printedConfig
+=
'
\n\t
callbacks.onError:
'
+
this
.
callbacks
.
onError
.
name
;
}
console
.
info
(
printedConfig
);
}
},
...
...
@@ -1040,7 +1086,7 @@ THREE.OBJLoader2.Parser.prototype = {
var
index
=
this
.
rawMesh
.
activeMtlName
+
'
|
'
+
this
.
rawMesh
.
smoothingGroup
.
normalized
;
this
.
rawMesh
.
subGroupInUse
=
this
.
rawMesh
.
subGroups
[
index
];
if
(
!
THREE
.
LoaderSupport
.
Validator
.
isValid
(
this
.
rawMesh
.
subGroupInUse
)
)
{
if
(
this
.
rawMesh
.
subGroupInUse
===
undefined
||
this
.
rawMesh
.
subGroupInUse
===
null
)
{
this
.
rawMesh
.
subGroupInUse
=
{
index
:
index
,
...
...
@@ -1108,17 +1154,17 @@ THREE.OBJLoader2.Parser.prototype = {
var
mappingName
=
faceIndexV
+
(
faceIndexU
?
'
_
'
+
faceIndexU
:
'
_n
'
)
+
(
faceIndexN
?
'
_
'
+
faceIndexN
:
'
_n
'
);
var
indicesPointer
=
this
.
rawMesh
.
subGroupInUse
.
indexMappings
[
mappingName
];
if
(
THREE
.
LoaderSupport
.
Validator
.
isValid
(
indicesPointer
)
)
{
this
.
rawMesh
.
counts
.
doubleIndicesCount
++
;
}
else
{
if
(
indicesPointer
===
undefined
||
indicesPointer
===
null
)
{
indicesPointer
=
this
.
rawMesh
.
subGroupInUse
.
vertices
.
length
/
3
;
updateSubGroupInUse
();
this
.
rawMesh
.
subGroupInUse
.
indexMappings
[
mappingName
]
=
indicesPointer
;
this
.
rawMesh
.
subGroupInUse
.
indexMappingsCount
++
;
}
else
{
this
.
rawMesh
.
counts
.
doubleIndicesCount
++
;
}
this
.
rawMesh
.
subGroupInUse
.
indices
.
push
(
indicesPointer
);
...
...
@@ -1200,11 +1246,12 @@ THREE.OBJLoader2.Parser.prototype = {
processCompletedMesh
:
function
()
{
var
result
=
this
.
finalizeRawMesh
();
if
(
THREE
.
LoaderSupport
.
Validator
.
isValid
(
result
)
)
{
var
haveMesh
=
result
!==
null
;
if
(
haveMesh
)
{
if
(
this
.
colors
.
length
>
0
&&
this
.
colors
.
length
!==
this
.
vertices
.
length
)
{
if
(
this
.
colors
.
length
>
0
&&
this
.
colors
.
length
!==
this
.
vertices
.
length
&&
this
.
callbacks
.
onError
!==
null
)
{
this
.
_throw
Error
(
'
Vertex Colors were detected, but vertex count and color count do not match!
'
);
this
.
callbacks
.
on
Error
(
'
Vertex Colors were detected, but vertex count and color count do not match!
'
);
}
if
(
this
.
logging
.
enabled
&&
this
.
logging
.
debug
)
console
.
debug
(
this
.
createRawMeshReport
(
this
.
inputObjectCount
)
);
...
...
@@ -1212,14 +1259,17 @@ THREE.OBJLoader2.Parser.prototype = {
this
.
buildMesh
(
result
);
var
progressBytesPercent
=
this
.
globalCounts
.
currentByte
/
this
.
globalCounts
.
totalBytes
;
this
.
callbackProgress
(
'
Completed [o:
'
+
this
.
rawMesh
.
objectName
+
'
g:
'
+
this
.
rawMesh
.
groupName
+
'
] Total progress:
'
+
(
progressBytesPercent
*
100
).
toFixed
(
2
)
+
'
%
'
,
progressBytesPercent
);
if
(
this
.
callbacks
.
onProgress
!==
null
)
{
this
.
callbacks
.
onProgress
(
'
Completed [o:
'
+
this
.
rawMesh
.
objectName
+
'
g:
'
+
this
.
rawMesh
.
groupName
+
'
] Total progress:
'
+
(
progressBytesPercent
*
100
).
toFixed
(
2
)
+
'
%
'
,
progressBytesPercent
);
}
this
.
resetRawMesh
();
return
true
;
}
else
{
return
false
;
}
return
haveMesh
;
},
/**
...
...
@@ -1239,7 +1289,7 @@ THREE.OBJLoader2.Parser.prototype = {
var
colorFA
=
(
result
.
absoluteColorCount
>
0
)
?
new
Float32Array
(
result
.
absoluteColorCount
)
:
null
;
var
normalFA
=
(
result
.
absoluteNormalCount
>
0
)
?
new
Float32Array
(
result
.
absoluteNormalCount
)
:
null
;
var
uvFA
=
(
result
.
absoluteUvCount
>
0
)
?
new
Float32Array
(
result
.
absoluteUvCount
)
:
null
;
var
haveVertexColors
=
THREE
.
LoaderSupport
.
Validator
.
isValid
(
colorFA
)
;
var
haveVertexColors
=
colorFA
!==
null
;
var
meshOutputGroup
;
var
materialNames
=
[];
...
...
@@ -1281,29 +1331,20 @@ THREE.OBJLoader2.Parser.prototype = {
material
=
this
.
materials
[
materialName
];
// both original and derived names do not lead to an existing material => need to use a default material
if
(
!
THREE
.
LoaderSupport
.
Validator
.
isValid
(
materialOrg
)
&&
!
THREE
.
LoaderSupport
.
Validator
.
isValid
(
materia
l
)
)
{
if
(
(
materialOrg
===
undefined
||
materialOrg
===
null
)
&&
(
material
===
undefined
||
material
===
nul
l
)
)
{
var
defaultM
aterialName
=
haveVertexColors
?
'
defaultVertexColorMaterial
'
:
'
defaultMaterial
'
;
material
Org
=
this
.
materials
[
defaultM
aterialName
];
m
aterialName
=
haveVertexColors
?
'
defaultVertexColorMaterial
'
:
'
defaultMaterial
'
;
material
=
this
.
materials
[
m
aterialName
];
if
(
this
.
logging
.
enabled
)
{
console
.
info
(
'
object_group "
'
+
meshOutputGroup
.
objectName
+
'
_
'
+
meshOutputGroup
.
groupName
+
'
" was defined with unresolvable material "
'
+
materialNameOrg
+
'
"! Assigning "
'
+
defaultMaterialName
+
'
".
'
);
}
materialNameOrg
=
defaultMaterialName
;
// if names are identical then there is no need for later manipulation
if
(
materialNameOrg
===
materialName
)
{
material
=
materialOrg
;
materialName
=
defaultMaterialName
;
materialNameOrg
+
'
"! Assigning "
'
+
materialName
+
'
".
'
);
}
}
if
(
!
THREE
.
LoaderSupport
.
Validator
.
isValid
(
material
)
)
{
if
(
material
===
undefined
||
material
===
null
)
{
var
materialCloneInstructions
=
{
materialNameOrg
:
materialNameOrg
,
...
...
@@ -1319,7 +1360,7 @@ THREE.OBJLoader2.Parser.prototype = {
materialCloneInstructions
:
materialCloneInstructions
}
};
this
.
callback
MeshBuilder
(
payload
);
this
.
callback
s
.
onAssetAvailable
(
payload
);
// fake entry for async; sync Parser always works on material references (Builder update directly visible here)
if
(
this
.
useAsync
)
this
.
materials
[
materialName
]
=
materialCloneInstructions
;
...
...
@@ -1384,7 +1425,7 @@ THREE.OBJLoader2.Parser.prototype = {
}
if
(
this
.
logging
.
enabled
&&
this
.
logging
.
debug
)
{
var
materialIndexLine
=
THREE
.
LoaderSupport
.
Validator
.
isValid
(
selectedMaterialIndex
)
?
'
\n\t\t
materialIndex:
'
+
selectedMaterialIndex
:
''
;
var
materialIndexLine
=
(
selectedMaterialIndex
===
undefined
||
selectedMaterialIndex
===
null
)
?
''
:
'
\n\t\t
materialIndex:
'
+
selectedMaterialIndex
;
var
createdReport
=
'
\t
Output Object no.:
'
+
this
.
outputObjectCount
+
'
\n\t\t
groupName:
'
+
meshOutputGroup
.
groupName
+
'
\n\t\t
Index:
'
+
meshOutputGroup
.
index
+
...
...
@@ -1404,7 +1445,7 @@ THREE.OBJLoader2.Parser.prototype = {
}
this
.
outputObjectCount
++
;
this
.
callback
MeshBuilder
(
this
.
callback
s
.
onAssetAvailable
(
{
cmd
:
'
meshData
'
,
progress
:
{
...
...
@@ -1429,10 +1470,10 @@ THREE.OBJLoader2.Parser.prototype = {
geometryType
:
this
.
rawMesh
.
faceType
<
4
?
0
:
(
this
.
rawMesh
.
faceType
===
6
)
?
2
:
1
},
[
vertexFA
.
buffer
],
THREE
.
LoaderSupport
.
Validator
.
isValid
(
indexUA
)
?
[
indexUA
.
buffer
]
:
null
,
THREE
.
LoaderSupport
.
Validator
.
isValid
(
colorFA
)
?
[
colorFA
.
buffer
]
:
null
,
THREE
.
LoaderSupport
.
Validator
.
isValid
(
normalFA
)
?
[
normalFA
.
buffer
]
:
null
,
THREE
.
LoaderSupport
.
Validator
.
isValid
(
uvFA
)
?
[
uvFA
.
buffer
]
:
null
indexUA
!==
null
?
[
indexUA
.
buffer
]
:
null
,
colorFA
!==
null
?
[
colorFA
.
buffer
]
:
null
,
normalFA
!==
null
?
[
normalFA
.
buffer
]
:
null
,
uvFA
!==
null
?
[
uvFA
.
buffer
]
:
null
);
},
...
...
examples/webgl_loader_obj2_meshspray.html
浏览文件 @
be76904d
...
...
@@ -226,8 +226,9 @@
this
.
debug
=
false
;
this
.
dimension
=
200
;
this
.
quantity
=
1
;
this
.
callbackMeshBuilder
=
null
;
this
.
callbackProgress
=
null
;
this
.
callbacks
=
{
onAssetAvailable
:
null
};
this
.
serializedMaterials
=
null
;
this
.
logging
=
{
enabled
:
true
,
...
...
@@ -239,6 +240,14 @@
constructor
:
MeshSpray
.
Parser
,
setCallbackOnAssetAvailable
:
function
(
onAssetAvailable
)
{
if
(
onAssetAvailable
!==
null
&&
onAssetAvailable
!==
undefined
)
{
this
.
callbacks
.
onAssetAvailable
=
onAssetAvailable
;
}
},
setLogging
:
function
(
enabled
,
debug
)
{
this
.
logging
.
enabled
=
enabled
===
true
;
this
.
logging
.
debug
=
debug
===
true
;
...
...
@@ -330,10 +339,10 @@
serializedMaterials
:
newSerializedMaterials
}
};
this
.
callback
MeshBuilder
(
payload
);
this
.
callback
s
.
onAssetAvailable
(
payload
);
this
.
globalObjectCount
++
;
this
.
callback
MeshBuilder
(
this
.
callback
s
.
onAssetAvailable
(
{
cmd
:
'
meshData
'
,
progress
:
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录