urdf-loader 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "urdf-loader",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "URDF Loader for THREE.js and webcomponent viewer",
|
|
5
5
|
"main": "src/URDFLoader.js",
|
|
6
6
|
"type": "module",
|
|
@@ -36,13 +36,13 @@
|
|
|
36
36
|
"webcomponents"
|
|
37
37
|
],
|
|
38
38
|
"peerDependencies": {
|
|
39
|
-
"three": ">=0.
|
|
39
|
+
"three": ">=0.152.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@babel/core": "^7.
|
|
43
|
-
"@babel/preset-env": "^7.
|
|
42
|
+
"@babel/core": "^7.21.8",
|
|
43
|
+
"@babel/preset-env": "^7.21.5",
|
|
44
44
|
"@webcomponents/webcomponentsjs": "^2.4.4",
|
|
45
|
-
"babel-jest": "^
|
|
45
|
+
"babel-jest": "^29.5.0",
|
|
46
46
|
"concurrently": "^6.2.1",
|
|
47
47
|
"eslint": "^7.10.0",
|
|
48
48
|
"eslint-plugin-jest": "^24.1.0",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"nyc": "^15.1.0",
|
|
54
54
|
"parcel-bundler": "^1.12.5",
|
|
55
55
|
"static-server": "^3.0.0",
|
|
56
|
-
"three": "^0.
|
|
56
|
+
"three": "^0.152.2",
|
|
57
57
|
"typescript": "^3.9.7",
|
|
58
58
|
"rollup": "^2.29.0"
|
|
59
59
|
},
|
package/src/URDFLoader.js
CHANGED
|
@@ -473,7 +473,7 @@ class URDFLoader {
|
|
|
473
473
|
.split(/\s/g)
|
|
474
474
|
.map(v => parseFloat(v));
|
|
475
475
|
|
|
476
|
-
material.color.setRGB(rgba[0], rgba[1], rgba[2])
|
|
476
|
+
material.color.setRGB(rgba[0], rgba[1], rgba[2]);
|
|
477
477
|
material.opacity = rgba[3];
|
|
478
478
|
material.transparent = rgba[3] < 1;
|
|
479
479
|
material.depthWrite = !material.transparent;
|
|
@@ -488,7 +488,7 @@ class URDFLoader {
|
|
|
488
488
|
const loader = new THREE.TextureLoader(manager);
|
|
489
489
|
const filePath = resolvePath(filename);
|
|
490
490
|
material.map = loader.load(filePath);
|
|
491
|
-
material.map.
|
|
491
|
+
material.map.colorSpace = THREE.SRGBColorSpace;
|
|
492
492
|
|
|
493
493
|
}
|
|
494
494
|
|
|
@@ -39,7 +39,7 @@ class URDFViewer extends HTMLElement {
|
|
|
39
39
|
get displayShadow() { return this.hasAttribute('display-shadow') || false; }
|
|
40
40
|
set displayShadow(val) { val ? this.setAttribute('display-shadow', '') : this.removeAttribute('display-shadow'); }
|
|
41
41
|
|
|
42
|
-
get ambientColor() { return this.getAttribute('ambient-color') || '#
|
|
42
|
+
get ambientColor() { return this.getAttribute('ambient-color') || '#8ea0a8'; }
|
|
43
43
|
set ambientColor(val) { val ? this.setAttribute('ambient-color', val) : this.removeAttribute('ambient-color'); }
|
|
44
44
|
|
|
45
45
|
get autoRedraw() { return this.hasAttribute('auto-redraw') || false; }
|
|
@@ -118,7 +118,7 @@ class URDFViewer extends HTMLElement {
|
|
|
118
118
|
renderer.setClearAlpha(0);
|
|
119
119
|
renderer.shadowMap.enabled = true;
|
|
120
120
|
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
|
|
121
|
-
renderer.
|
|
121
|
+
renderer.outputColorSpace = THREE.SRGBColorSpace;
|
|
122
122
|
|
|
123
123
|
// Camera setup
|
|
124
124
|
const camera = new THREE.PerspectiveCamera(75, 1, 0.1, 1000);
|
|
@@ -453,7 +453,7 @@ class URDFViewer extends HTMLElement {
|
|
|
453
453
|
|
|
454
454
|
if (m.map) {
|
|
455
455
|
|
|
456
|
-
m.map.
|
|
456
|
+
m.map.colorSpace = THREE.SRGBColorSpace;
|
|
457
457
|
|
|
458
458
|
}
|
|
459
459
|
|
package/umd/URDFLoader.js
CHANGED
|
@@ -887,7 +887,7 @@
|
|
|
887
887
|
.split(/\s/g)
|
|
888
888
|
.map(v => parseFloat(v));
|
|
889
889
|
|
|
890
|
-
material.color.setRGB(rgba[0], rgba[1], rgba[2])
|
|
890
|
+
material.color.setRGB(rgba[0], rgba[1], rgba[2]);
|
|
891
891
|
material.opacity = rgba[3];
|
|
892
892
|
material.transparent = rgba[3] < 1;
|
|
893
893
|
material.depthWrite = !material.transparent;
|
|
@@ -902,7 +902,7 @@
|
|
|
902
902
|
const loader = new THREE__namespace.TextureLoader(manager);
|
|
903
903
|
const filePath = resolvePath(filename);
|
|
904
904
|
material.map = loader.load(filePath);
|
|
905
|
-
material.map.
|
|
905
|
+
material.map.colorSpace = THREE__namespace.SRGBColorSpace;
|
|
906
906
|
|
|
907
907
|
}
|
|
908
908
|
|
package/umd/URDFLoader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"URDFLoader.js","sources":["../src/URDFClasses.js","../src/URDFLoader.js"],"sourcesContent":["import { Object3D, Vector3 } from 'three';\n\nclass URDFBase extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.urdfNode = null;\n this.urdfName = '';\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfNode = source.urdfNode;\n this.urdfName = source.urdfName;\n\n return this;\n\n }\n\n}\n\nclass URDFCollider extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFCollider = true;\n this.type = 'URDFCollider';\n\n }\n\n}\n\nclass URDFVisual extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFVisual = true;\n this.type = 'URDFVisual';\n\n }\n\n}\n\nclass URDFLink extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFLink = true;\n this.type = 'URDFLink';\n\n }\n\n}\n\nclass URDFJoint extends URDFBase {\n\n get jointType() {\n\n return this._jointType;\n\n }\n\n set jointType(v) {\n\n if (this.jointType === v) return;\n this._jointType = v;\n this.matrixWorldNeedsUpdate = true;\n switch (v) {\n\n case 'fixed':\n this.jointValue = [];\n break;\n\n case 'continuous':\n case 'revolute':\n case 'prismatic':\n this.jointValue = new Array(1).fill(0);\n break;\n\n case 'planar':\n this.jointValue = new Array(2).fill(0);\n break;\n\n case 'floating':\n this.jointValue = new Array(6).fill(0);\n break;\n\n }\n\n }\n\n get angle() {\n\n return this.jointValue[0];\n\n }\n\n constructor(...args) {\n\n super(...args);\n\n this.isURDFJoint = true;\n this.type = 'URDFJoint';\n\n this.jointValue = null;\n this.jointType = 'fixed';\n this.axis = new Vector3(1, 0, 0);\n this.limit = { lower: 0, upper: 0 };\n this.ignoreLimits = false;\n\n this.origPosition = null;\n this.origQuaternion = null;\n\n this.mimicJoints = [];\n\n }\n\n /* Overrides */\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.jointType = source.jointType;\n this.axis = source.axis.clone();\n this.limit.lower = source.limit.lower;\n this.limit.upper = source.limit.upper;\n this.ignoreLimits = false;\n\n this.jointValue = [...source.jointValue];\n\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\n\n this.mimicJoints = [...source.mimicJoints];\n\n return this;\n\n }\n\n /* Public Functions */\n setJointValue(...values) {\n\n values = values.map(v => parseFloat(v));\n\n if (!this.origPosition || !this.origQuaternion) {\n\n this.origPosition = this.position.clone();\n this.origQuaternion = this.quaternion.clone();\n\n }\n\n let didUpdate = false;\n\n this.mimicJoints.forEach(joint => {\n\n didUpdate = joint.updateFromMimickedJoint(...values) || didUpdate;\n\n });\n\n switch (this.jointType) {\n\n case 'fixed': {\n\n return didUpdate;\n\n }\n case 'continuous':\n case 'revolute': {\n\n let angle = values[0];\n if (angle == null) return didUpdate;\n if (angle === this.jointValue[0]) return didUpdate;\n\n if (!this.ignoreLimits && this.jointType === 'revolute') {\n\n angle = Math.min(this.limit.upper, angle);\n angle = Math.max(this.limit.lower, angle);\n\n }\n\n this.quaternion\n .setFromAxisAngle(this.axis, angle)\n .premultiply(this.origQuaternion);\n\n if (this.jointValue[0] !== angle) {\n\n this.jointValue[0] = angle;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return didUpdate;\n\n }\n\n }\n\n case 'prismatic': {\n\n let pos = values[0];\n if (pos == null) return didUpdate;\n if (pos === this.jointValue[0]) return didUpdate;\n\n if (!this.ignoreLimits) {\n\n pos = Math.min(this.limit.upper, pos);\n pos = Math.max(this.limit.lower, pos);\n\n }\n\n this.position.copy(this.origPosition);\n this.position.addScaledVector(this.axis, pos);\n\n if (this.jointValue[0] !== pos) {\n\n this.jointValue[0] = pos;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return didUpdate;\n\n }\n\n }\n\n case 'floating':\n case 'planar':\n // TODO: Support these joint types\n console.warn(`'${ this.jointType }' joint not yet supported`);\n\n }\n\n return didUpdate;\n\n }\n\n}\n\nclass URDFMimicJoint extends URDFJoint {\n\n constructor(...args) {\n\n super(...args);\n this.type = 'URDFMimicJoint';\n this.mimicJoint = null;\n this.offset = 0;\n this.multiplier = 1;\n\n }\n\n updateFromMimickedJoint(...values) {\n\n const modifiedValues = values.map(x => x * this.multiplier + this.offset);\n return super.setJointValue(...modifiedValues);\n\n }\n\n /* Overrides */\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.mimicJoint = source.mimicJoint;\n this.offset = source.offset;\n this.multiplier = source.multiplier;\n\n return this;\n\n }\n\n}\n\nclass URDFRobot extends URDFLink {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFRobot = true;\n this.urdfNode = null;\n\n this.urdfRobotNode = null;\n this.robotName = null;\n\n this.links = null;\n this.joints = null;\n this.colliders = null;\n this.visual = null;\n this.frames = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfRobotNode = source.urdfRobotNode;\n this.robotName = source.robotName;\n\n this.links = {};\n this.joints = {};\n this.colliders = {};\n this.visual = {};\n\n this.traverse(c => {\n\n if (c.isURDFJoint && c.urdfName in source.joints) {\n\n this.joints[c.urdfName] = c;\n\n }\n\n if (c.isURDFLink && c.urdfName in source.links) {\n\n this.links[c.urdfName] = c;\n\n }\n\n if (c.isURDFCollider && c.urdfName in source.colliders) {\n\n this.colliders[c.urdfName] = c;\n\n }\n\n if (c.isURDFVisual && c.urdfName in source.visual) {\n\n this.visual[c.urdfName] = c;\n\n }\n\n });\n\n this.frames = {\n ...this.colliders,\n ...this.visual,\n ...this.links,\n ...this.joints,\n };\n\n return this;\n\n }\n\n getFrame(name) {\n\n return this.frames[name];\n\n }\n\n setJointValue(jointName, ...angle) {\n\n const joint = this.joints[jointName];\n if (joint) {\n\n return joint.setJointValue(...angle);\n\n }\n\n return false;\n }\n\n setJointValues(values) {\n\n let didChange = false;\n for (const name in values) {\n\n const value = values[name];\n if (Array.isArray(value)) {\n\n didChange = this.setJointValue(name, ...value) || didChange;\n\n } else {\n\n didChange = this.setJointValue(name, value) || didChange;\n\n }\n\n }\n\n return didChange;\n\n }\n\n}\n\nexport { URDFRobot, URDFLink, URDFJoint, URDFMimicJoint, URDFVisual, URDFCollider };\n","import * as THREE from 'three';\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual, URDFMimicJoint } from './URDFClasses.js';\n\n/*\nReference coordinate frames for THREE.js and ROS.\nBoth coordinate systems are right handed so the URDF is instantiated without\nframe transforms. The resulting model can be rotated to rectify the proper up,\nright, and forward directions\n\nTHREE.js\n Y\n |\n |\n .-----X\n /\nZ\n\nROS URDf\n Z\n | X\n | /\n Y-----.\n\n*/\n\nconst tempQuaternion = new THREE.Quaternion();\nconst tempEuler = new THREE.Euler();\n\n// take a vector \"x y z\" and process it into\n// an array [x, y, z]\nfunction processTuple(val) {\n\n if (!val) return [0, 0, 0];\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\n\n}\n\n// applies a rotation a threejs object in URDF order\nfunction applyRotation(obj, rpy, additive = false) {\n\n // if additive is true the rotation is applied in\n // addition to the existing rotation\n if (!additive) obj.rotation.set(0, 0, 0);\n\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\n tempQuaternion.setFromEuler(tempEuler);\n tempQuaternion.multiply(obj.quaternion);\n obj.quaternion.copy(tempQuaternion);\n\n}\n\n/* URDFLoader Class */\n// Loads and reads a URDF file into a THREEjs Object3D format\nexport default\nclass URDFLoader {\n\n constructor(manager) {\n\n this.manager = manager || THREE.DefaultLoadingManager;\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\n this.parseVisual = true;\n this.parseCollision = false;\n this.packages = '';\n this.workingPath = '';\n this.fetchOptions = {};\n\n }\n\n /* Public API */\n loadAsync(urdf) {\n\n return new Promise((resolve, reject) => {\n\n this.load(urdf, resolve, null, reject);\n\n });\n\n }\n\n // urdf: The path to the URDF within the package OR absolute\n // onComplete: Callback that is passed the model once loaded\n load(urdf, onComplete, onProgress, onError) {\n\n // Check if a full URI is specified before\n // prepending the package info\n const manager = this.manager;\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\n const urdfPath = this.manager.resolveURL(urdf);\n\n manager.itemStart(urdfPath);\n\n fetch(urdfPath, this.fetchOptions)\n .then(res => {\n\n if (res.ok) {\n\n if (onProgress) {\n\n onProgress(null);\n\n }\n return res.text();\n\n } else {\n\n throw new Error(`URDFLoader: Failed to load url '${ urdfPath }' with error code ${ res.status } : ${ res.statusText }.`);\n\n }\n\n })\n .then(data => {\n\n if (this.workingPath === '') {\n\n this.workingPath = workingPath;\n\n }\n\n const model = this.parse(data);\n onComplete(model);\n manager.itemEnd(urdfPath);\n\n })\n .catch(e => {\n\n if (onError) {\n\n onError(e);\n\n } else {\n\n console.error('URDFLoader: Error loading file.', e);\n\n }\n manager.itemError(urdfPath);\n manager.itemEnd(urdfPath);\n\n });\n\n }\n\n parse(content) {\n\n const packages = this.packages;\n const loadMeshCb = this.loadMeshCb;\n const parseVisual = this.parseVisual;\n const parseCollision = this.parseCollision;\n const workingPath = this.workingPath;\n const manager = this.manager;\n const linkMap = {};\n const jointMap = {};\n const materialMap = {};\n\n // Resolves the path of mesh files\n function resolvePath(path) {\n\n if (!/^package:\\/\\//.test(path)) {\n\n return workingPath ? workingPath + path : path;\n\n }\n\n // Remove \"package://\" keyword and split meshPath at the first slash\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\n\n if (typeof packages === 'string') {\n\n // \"pkg\" is one single package\n if (packages.endsWith(targetPkg)) {\n\n // \"pkg\" is the target package\n return packages + '/' + relPath;\n\n } else {\n\n // Assume \"pkg\" is the target package's parent directory\n return packages + '/' + targetPkg + '/' + relPath;\n\n }\n\n } else if (packages instanceof Function) {\n\n return packages(targetPkg) + '/' + relPath;\n\n } else if (typeof packages === 'object') {\n\n // \"pkg\" is a map of packages\n if (targetPkg in packages) {\n\n return packages[targetPkg] + '/' + relPath;\n\n } else {\n\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\n return null;\n\n }\n\n }\n\n }\n\n // Process the URDF text format\n function processUrdf(data) {\n\n let children;\n if (data instanceof Document) {\n\n children = [ ...data.children ];\n\n } else if (data instanceof Element) {\n\n children = [ data ];\n\n } else {\n\n const parser = new DOMParser();\n const urdf = parser.parseFromString(data, 'text/xml');\n children = [ ...urdf.children ];\n\n }\n\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\n return processRobot(robotNode);\n\n }\n\n // Process the <robot> node\n function processRobot(robot) {\n\n const robotNodes = [ ...robot.children ];\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\n const obj = new URDFRobot();\n\n obj.robotName = robot.getAttribute('name');\n obj.urdfRobotNode = robot;\n\n // Create the <material> map\n materials.forEach(m => {\n\n const name = m.getAttribute('name');\n materialMap[name] = processMaterial(m);\n\n });\n\n // Create the <link> map\n const visualMap = {};\n const colliderMap = {};\n links.forEach(l => {\n\n const name = l.getAttribute('name');\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\n\n });\n\n // Create the <joint> map\n joints.forEach(j => {\n\n const name = j.getAttribute('name');\n jointMap[name] = processJoint(j);\n\n });\n\n obj.joints = jointMap;\n obj.links = linkMap;\n obj.colliders = colliderMap;\n obj.visual = visualMap;\n\n // Link up mimic joints\n const jointList = Object.values(jointMap);\n jointList.forEach(j => {\n\n if (j instanceof URDFMimicJoint) {\n\n jointMap[j.mimicJoint].mimicJoints.push(j);\n\n }\n\n });\n\n // Detect infinite loops of mimic joints\n jointList.forEach(j => {\n\n const uniqueJoints = new Set();\n const iterFunction = joint => {\n\n if (uniqueJoints.has(joint)) {\n\n throw new Error('URDFLoader: Detected an infinite loop of mimic joints.');\n\n }\n\n uniqueJoints.add(joint);\n joint.mimicJoints.forEach(j => {\n\n iterFunction(j);\n\n });\n\n };\n\n iterFunction(j);\n });\n\n obj.frames = {\n ...colliderMap,\n ...visualMap,\n ...linkMap,\n ...jointMap,\n };\n\n return obj;\n\n }\n\n // Process joint nodes and parent them\n function processJoint(joint) {\n\n const children = [ ...joint.children ];\n const jointType = joint.getAttribute('type');\n\n let obj;\n\n const mimicTag = children.find(n => n.nodeName.toLowerCase() === 'mimic');\n if (mimicTag) {\n\n obj = new URDFMimicJoint();\n obj.mimicJoint = mimicTag.getAttribute('joint');\n obj.multiplier = parseFloat(mimicTag.getAttribute('multiplier') || 1.0);\n obj.offset = parseFloat(mimicTag.getAttribute('offset') || 0.0);\n\n } else {\n\n obj = new URDFJoint();\n\n }\n\n obj.urdfNode = joint;\n obj.name = joint.getAttribute('name');\n obj.urdfName = obj.name;\n obj.jointType = jointType;\n\n let parent = null;\n let child = null;\n let xyz = [0, 0, 0];\n let rpy = [0, 0, 0];\n\n // Extract the attributes\n children.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'origin') {\n\n xyz = processTuple(n.getAttribute('xyz'));\n rpy = processTuple(n.getAttribute('rpy'));\n\n } else if (type === 'child') {\n\n child = linkMap[n.getAttribute('link')];\n\n } else if (type === 'parent') {\n\n parent = linkMap[n.getAttribute('link')];\n\n } else if (type === 'limit') {\n\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\n\n }\n });\n\n // Join the links\n parent.add(obj);\n obj.add(child);\n applyRotation(obj, rpy);\n obj.position.set(xyz[0], xyz[1], xyz[2]);\n\n // Set up the rotate function\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\n\n if (axisNode) {\n\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\n obj.axis.normalize();\n\n }\n\n return obj;\n\n }\n\n // Process the <link> nodes\n function processLink(link, visualMap, colliderMap, target = null) {\n\n if (target === null) {\n\n target = new URDFLink();\n\n }\n\n const children = [ ...link.children ];\n target.name = link.getAttribute('name');\n target.urdfName = target.name;\n target.urdfNode = link;\n\n if (parseVisual) {\n\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\n visualNodes.forEach(vn => {\n\n const v = processLinkElement(vn, materialMap);\n target.add(v);\n\n if (vn.hasAttribute('name')) {\n\n const name = vn.getAttribute('name');\n v.name = name;\n v.urdfName = name;\n visualMap[name] = v;\n\n }\n\n });\n\n }\n\n if (parseCollision) {\n\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\n collisionNodes.forEach(cn => {\n\n const c = processLinkElement(cn);\n target.add(c);\n\n if (cn.hasAttribute('name')) {\n\n const name = cn.getAttribute('name');\n c.name = name;\n c.urdfName = name;\n colliderMap[name] = c;\n\n }\n\n });\n\n }\n\n return target;\n\n }\n\n function processMaterial(node) {\n\n const matNodes = [ ...node.children ];\n const material = new THREE.MeshPhongMaterial();\n\n material.name = node.getAttribute('name') || '';\n matNodes.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'color') {\n\n const rgba =\n n\n .getAttribute('rgba')\n .split(/\\s/g)\n .map(v => parseFloat(v));\n\n material.color.setRGB(rgba[0], rgba[1], rgba[2]).convertSRGBToLinear();\n material.opacity = rgba[3];\n material.transparent = rgba[3] < 1;\n material.depthWrite = !material.transparent;\n\n } else if (type === 'texture') {\n\n // The URDF spec does not require that the <texture/> tag include\n // a filename attribute so skip loading the texture if not provided.\n const filename = n.getAttribute('filename');\n if (filename) {\n\n const loader = new THREE.TextureLoader(manager);\n const filePath = resolvePath(filename);\n material.map = loader.load(filePath);\n material.map.encoding = THREE.sRGBEncoding;\n\n }\n\n }\n });\n\n return material;\n\n }\n\n // Process the visual and collision nodes into meshes\n function processLinkElement(vn, materialMap = {}) {\n\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\n const children = [ ...vn.children ];\n let material = null;\n\n // get the material first\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\n if (materialNode) {\n\n const name = materialNode.getAttribute('name');\n if (name && name in materialMap) {\n\n material = materialMap[name];\n\n } else {\n\n material = processMaterial(materialNode);\n\n }\n\n } else {\n\n material = new THREE.MeshPhongMaterial();\n\n }\n\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\n group.urdfNode = vn;\n\n children.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'geometry') {\n\n const geoType = n.children[0].nodeName.toLowerCase();\n if (geoType === 'mesh') {\n\n const filename = n.children[0].getAttribute('filename');\n const filePath = resolvePath(filename);\n\n // file path is null if a package directory is not provided.\n if (filePath !== null) {\n\n const scaleAttr = n.children[0].getAttribute('scale');\n if (scaleAttr) {\n\n const scale = processTuple(scaleAttr);\n group.scale.set(scale[0], scale[1], scale[2]);\n\n }\n\n loadMeshCb(filePath, manager, (obj, err) => {\n\n if (err) {\n\n console.error('URDFLoader: Error loading mesh.', err);\n\n } else if (obj) {\n\n if (obj instanceof THREE.Mesh) {\n\n obj.material = material;\n\n }\n\n // We don't expect non identity rotations or positions. In the case of\n // COLLADA files the model might come in with a custom scale for unit\n // conversion.\n obj.position.set(0, 0, 0);\n obj.quaternion.identity();\n group.add(obj);\n\n }\n\n });\n\n }\n\n } else if (geoType === 'box') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.BoxGeometry(1, 1, 1);\n primitiveModel.material = material;\n\n const size = processTuple(n.children[0].getAttribute('size'));\n primitiveModel.scale.set(size[0], size[1], size[2]);\n\n group.add(primitiveModel);\n\n } else if (geoType === 'sphere') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.SphereGeometry(1, 30, 30);\n primitiveModel.material = material;\n\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\n primitiveModel.scale.set(radius, radius, radius);\n\n group.add(primitiveModel);\n\n } else if (geoType === 'cylinder') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.CylinderGeometry(1, 1, 1, 30);\n primitiveModel.material = material;\n\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\n primitiveModel.scale.set(radius, length, radius);\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\n\n group.add(primitiveModel);\n\n }\n\n } else if (type === 'origin') {\n\n const xyz = processTuple(n.getAttribute('xyz'));\n const rpy = processTuple(n.getAttribute('rpy'));\n\n group.position.set(xyz[0], xyz[1], xyz[2]);\n group.rotation.set(0, 0, 0);\n applyRotation(group, rpy);\n\n }\n\n });\n\n return group;\n\n }\n\n return processUrdf(content);\n\n }\n\n // Default mesh loading function\n defaultMeshLoader(path, manager, done) {\n\n if (/\\.stl$/i.test(path)) {\n\n const loader = new STLLoader(manager);\n loader.load(path, geom => {\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\n done(mesh);\n });\n\n } else if (/\\.dae$/i.test(path)) {\n\n const loader = new ColladaLoader(manager);\n loader.load(path, dae => done(dae.scene));\n\n } else {\n\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\n\n }\n\n }\n\n};\n"],"names":["Object3D","Vector3","THREE","STLLoader","ColladaLoader"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"URDFLoader.js","sources":["../src/URDFClasses.js","../src/URDFLoader.js"],"sourcesContent":["import { Object3D, Vector3 } from 'three';\n\nclass URDFBase extends Object3D {\n\n constructor(...args) {\n\n super(...args);\n this.urdfNode = null;\n this.urdfName = '';\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfNode = source.urdfNode;\n this.urdfName = source.urdfName;\n\n return this;\n\n }\n\n}\n\nclass URDFCollider extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFCollider = true;\n this.type = 'URDFCollider';\n\n }\n\n}\n\nclass URDFVisual extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFVisual = true;\n this.type = 'URDFVisual';\n\n }\n\n}\n\nclass URDFLink extends URDFBase {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFLink = true;\n this.type = 'URDFLink';\n\n }\n\n}\n\nclass URDFJoint extends URDFBase {\n\n get jointType() {\n\n return this._jointType;\n\n }\n\n set jointType(v) {\n\n if (this.jointType === v) return;\n this._jointType = v;\n this.matrixWorldNeedsUpdate = true;\n switch (v) {\n\n case 'fixed':\n this.jointValue = [];\n break;\n\n case 'continuous':\n case 'revolute':\n case 'prismatic':\n this.jointValue = new Array(1).fill(0);\n break;\n\n case 'planar':\n this.jointValue = new Array(2).fill(0);\n break;\n\n case 'floating':\n this.jointValue = new Array(6).fill(0);\n break;\n\n }\n\n }\n\n get angle() {\n\n return this.jointValue[0];\n\n }\n\n constructor(...args) {\n\n super(...args);\n\n this.isURDFJoint = true;\n this.type = 'URDFJoint';\n\n this.jointValue = null;\n this.jointType = 'fixed';\n this.axis = new Vector3(1, 0, 0);\n this.limit = { lower: 0, upper: 0 };\n this.ignoreLimits = false;\n\n this.origPosition = null;\n this.origQuaternion = null;\n\n this.mimicJoints = [];\n\n }\n\n /* Overrides */\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.jointType = source.jointType;\n this.axis = source.axis.clone();\n this.limit.lower = source.limit.lower;\n this.limit.upper = source.limit.upper;\n this.ignoreLimits = false;\n\n this.jointValue = [...source.jointValue];\n\n this.origPosition = source.origPosition ? source.origPosition.clone() : null;\n this.origQuaternion = source.origQuaternion ? source.origQuaternion.clone() : null;\n\n this.mimicJoints = [...source.mimicJoints];\n\n return this;\n\n }\n\n /* Public Functions */\n setJointValue(...values) {\n\n values = values.map(v => parseFloat(v));\n\n if (!this.origPosition || !this.origQuaternion) {\n\n this.origPosition = this.position.clone();\n this.origQuaternion = this.quaternion.clone();\n\n }\n\n let didUpdate = false;\n\n this.mimicJoints.forEach(joint => {\n\n didUpdate = joint.updateFromMimickedJoint(...values) || didUpdate;\n\n });\n\n switch (this.jointType) {\n\n case 'fixed': {\n\n return didUpdate;\n\n }\n case 'continuous':\n case 'revolute': {\n\n let angle = values[0];\n if (angle == null) return didUpdate;\n if (angle === this.jointValue[0]) return didUpdate;\n\n if (!this.ignoreLimits && this.jointType === 'revolute') {\n\n angle = Math.min(this.limit.upper, angle);\n angle = Math.max(this.limit.lower, angle);\n\n }\n\n this.quaternion\n .setFromAxisAngle(this.axis, angle)\n .premultiply(this.origQuaternion);\n\n if (this.jointValue[0] !== angle) {\n\n this.jointValue[0] = angle;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return didUpdate;\n\n }\n\n }\n\n case 'prismatic': {\n\n let pos = values[0];\n if (pos == null) return didUpdate;\n if (pos === this.jointValue[0]) return didUpdate;\n\n if (!this.ignoreLimits) {\n\n pos = Math.min(this.limit.upper, pos);\n pos = Math.max(this.limit.lower, pos);\n\n }\n\n this.position.copy(this.origPosition);\n this.position.addScaledVector(this.axis, pos);\n\n if (this.jointValue[0] !== pos) {\n\n this.jointValue[0] = pos;\n this.matrixWorldNeedsUpdate = true;\n return true;\n\n } else {\n\n return didUpdate;\n\n }\n\n }\n\n case 'floating':\n case 'planar':\n // TODO: Support these joint types\n console.warn(`'${ this.jointType }' joint not yet supported`);\n\n }\n\n return didUpdate;\n\n }\n\n}\n\nclass URDFMimicJoint extends URDFJoint {\n\n constructor(...args) {\n\n super(...args);\n this.type = 'URDFMimicJoint';\n this.mimicJoint = null;\n this.offset = 0;\n this.multiplier = 1;\n\n }\n\n updateFromMimickedJoint(...values) {\n\n const modifiedValues = values.map(x => x * this.multiplier + this.offset);\n return super.setJointValue(...modifiedValues);\n\n }\n\n /* Overrides */\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.mimicJoint = source.mimicJoint;\n this.offset = source.offset;\n this.multiplier = source.multiplier;\n\n return this;\n\n }\n\n}\n\nclass URDFRobot extends URDFLink {\n\n constructor(...args) {\n\n super(...args);\n this.isURDFRobot = true;\n this.urdfNode = null;\n\n this.urdfRobotNode = null;\n this.robotName = null;\n\n this.links = null;\n this.joints = null;\n this.colliders = null;\n this.visual = null;\n this.frames = null;\n\n }\n\n copy(source, recursive) {\n\n super.copy(source, recursive);\n\n this.urdfRobotNode = source.urdfRobotNode;\n this.robotName = source.robotName;\n\n this.links = {};\n this.joints = {};\n this.colliders = {};\n this.visual = {};\n\n this.traverse(c => {\n\n if (c.isURDFJoint && c.urdfName in source.joints) {\n\n this.joints[c.urdfName] = c;\n\n }\n\n if (c.isURDFLink && c.urdfName in source.links) {\n\n this.links[c.urdfName] = c;\n\n }\n\n if (c.isURDFCollider && c.urdfName in source.colliders) {\n\n this.colliders[c.urdfName] = c;\n\n }\n\n if (c.isURDFVisual && c.urdfName in source.visual) {\n\n this.visual[c.urdfName] = c;\n\n }\n\n });\n\n this.frames = {\n ...this.colliders,\n ...this.visual,\n ...this.links,\n ...this.joints,\n };\n\n return this;\n\n }\n\n getFrame(name) {\n\n return this.frames[name];\n\n }\n\n setJointValue(jointName, ...angle) {\n\n const joint = this.joints[jointName];\n if (joint) {\n\n return joint.setJointValue(...angle);\n\n }\n\n return false;\n }\n\n setJointValues(values) {\n\n let didChange = false;\n for (const name in values) {\n\n const value = values[name];\n if (Array.isArray(value)) {\n\n didChange = this.setJointValue(name, ...value) || didChange;\n\n } else {\n\n didChange = this.setJointValue(name, value) || didChange;\n\n }\n\n }\n\n return didChange;\n\n }\n\n}\n\nexport { URDFRobot, URDFLink, URDFJoint, URDFMimicJoint, URDFVisual, URDFCollider };\n","import * as THREE from 'three';\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\nimport { URDFRobot, URDFJoint, URDFLink, URDFCollider, URDFVisual, URDFMimicJoint } from './URDFClasses.js';\n\n/*\nReference coordinate frames for THREE.js and ROS.\nBoth coordinate systems are right handed so the URDF is instantiated without\nframe transforms. The resulting model can be rotated to rectify the proper up,\nright, and forward directions\n\nTHREE.js\n Y\n |\n |\n .-----X\n /\nZ\n\nROS URDf\n Z\n | X\n | /\n Y-----.\n\n*/\n\nconst tempQuaternion = new THREE.Quaternion();\nconst tempEuler = new THREE.Euler();\n\n// take a vector \"x y z\" and process it into\n// an array [x, y, z]\nfunction processTuple(val) {\n\n if (!val) return [0, 0, 0];\n return val.trim().split(/\\s+/g).map(num => parseFloat(num));\n\n}\n\n// applies a rotation a threejs object in URDF order\nfunction applyRotation(obj, rpy, additive = false) {\n\n // if additive is true the rotation is applied in\n // addition to the existing rotation\n if (!additive) obj.rotation.set(0, 0, 0);\n\n tempEuler.set(rpy[0], rpy[1], rpy[2], 'ZYX');\n tempQuaternion.setFromEuler(tempEuler);\n tempQuaternion.multiply(obj.quaternion);\n obj.quaternion.copy(tempQuaternion);\n\n}\n\n/* URDFLoader Class */\n// Loads and reads a URDF file into a THREEjs Object3D format\nexport default\nclass URDFLoader {\n\n constructor(manager) {\n\n this.manager = manager || THREE.DefaultLoadingManager;\n this.loadMeshCb = this.defaultMeshLoader.bind(this);\n this.parseVisual = true;\n this.parseCollision = false;\n this.packages = '';\n this.workingPath = '';\n this.fetchOptions = {};\n\n }\n\n /* Public API */\n loadAsync(urdf) {\n\n return new Promise((resolve, reject) => {\n\n this.load(urdf, resolve, null, reject);\n\n });\n\n }\n\n // urdf: The path to the URDF within the package OR absolute\n // onComplete: Callback that is passed the model once loaded\n load(urdf, onComplete, onProgress, onError) {\n\n // Check if a full URI is specified before\n // prepending the package info\n const manager = this.manager;\n const workingPath = THREE.LoaderUtils.extractUrlBase(urdf);\n const urdfPath = this.manager.resolveURL(urdf);\n\n manager.itemStart(urdfPath);\n\n fetch(urdfPath, this.fetchOptions)\n .then(res => {\n\n if (res.ok) {\n\n if (onProgress) {\n\n onProgress(null);\n\n }\n return res.text();\n\n } else {\n\n throw new Error(`URDFLoader: Failed to load url '${ urdfPath }' with error code ${ res.status } : ${ res.statusText }.`);\n\n }\n\n })\n .then(data => {\n\n if (this.workingPath === '') {\n\n this.workingPath = workingPath;\n\n }\n\n const model = this.parse(data);\n onComplete(model);\n manager.itemEnd(urdfPath);\n\n })\n .catch(e => {\n\n if (onError) {\n\n onError(e);\n\n } else {\n\n console.error('URDFLoader: Error loading file.', e);\n\n }\n manager.itemError(urdfPath);\n manager.itemEnd(urdfPath);\n\n });\n\n }\n\n parse(content) {\n\n const packages = this.packages;\n const loadMeshCb = this.loadMeshCb;\n const parseVisual = this.parseVisual;\n const parseCollision = this.parseCollision;\n const workingPath = this.workingPath;\n const manager = this.manager;\n const linkMap = {};\n const jointMap = {};\n const materialMap = {};\n\n // Resolves the path of mesh files\n function resolvePath(path) {\n\n if (!/^package:\\/\\//.test(path)) {\n\n return workingPath ? workingPath + path : path;\n\n }\n\n // Remove \"package://\" keyword and split meshPath at the first slash\n const [targetPkg, relPath] = path.replace(/^package:\\/\\//, '').split(/\\/(.+)/);\n\n if (typeof packages === 'string') {\n\n // \"pkg\" is one single package\n if (packages.endsWith(targetPkg)) {\n\n // \"pkg\" is the target package\n return packages + '/' + relPath;\n\n } else {\n\n // Assume \"pkg\" is the target package's parent directory\n return packages + '/' + targetPkg + '/' + relPath;\n\n }\n\n } else if (packages instanceof Function) {\n\n return packages(targetPkg) + '/' + relPath;\n\n } else if (typeof packages === 'object') {\n\n // \"pkg\" is a map of packages\n if (targetPkg in packages) {\n\n return packages[targetPkg] + '/' + relPath;\n\n } else {\n\n console.error(`URDFLoader : ${ targetPkg } not found in provided package list.`);\n return null;\n\n }\n\n }\n\n }\n\n // Process the URDF text format\n function processUrdf(data) {\n\n let children;\n if (data instanceof Document) {\n\n children = [ ...data.children ];\n\n } else if (data instanceof Element) {\n\n children = [ data ];\n\n } else {\n\n const parser = new DOMParser();\n const urdf = parser.parseFromString(data, 'text/xml');\n children = [ ...urdf.children ];\n\n }\n\n const robotNode = children.filter(c => c.nodeName === 'robot').pop();\n return processRobot(robotNode);\n\n }\n\n // Process the <robot> node\n function processRobot(robot) {\n\n const robotNodes = [ ...robot.children ];\n const links = robotNodes.filter(c => c.nodeName.toLowerCase() === 'link');\n const joints = robotNodes.filter(c => c.nodeName.toLowerCase() === 'joint');\n const materials = robotNodes.filter(c => c.nodeName.toLowerCase() === 'material');\n const obj = new URDFRobot();\n\n obj.robotName = robot.getAttribute('name');\n obj.urdfRobotNode = robot;\n\n // Create the <material> map\n materials.forEach(m => {\n\n const name = m.getAttribute('name');\n materialMap[name] = processMaterial(m);\n\n });\n\n // Create the <link> map\n const visualMap = {};\n const colliderMap = {};\n links.forEach(l => {\n\n const name = l.getAttribute('name');\n const isRoot = robot.querySelector(`child[link=\"${ name }\"]`) === null;\n linkMap[name] = processLink(l, visualMap, colliderMap, isRoot ? obj : null);\n\n });\n\n // Create the <joint> map\n joints.forEach(j => {\n\n const name = j.getAttribute('name');\n jointMap[name] = processJoint(j);\n\n });\n\n obj.joints = jointMap;\n obj.links = linkMap;\n obj.colliders = colliderMap;\n obj.visual = visualMap;\n\n // Link up mimic joints\n const jointList = Object.values(jointMap);\n jointList.forEach(j => {\n\n if (j instanceof URDFMimicJoint) {\n\n jointMap[j.mimicJoint].mimicJoints.push(j);\n\n }\n\n });\n\n // Detect infinite loops of mimic joints\n jointList.forEach(j => {\n\n const uniqueJoints = new Set();\n const iterFunction = joint => {\n\n if (uniqueJoints.has(joint)) {\n\n throw new Error('URDFLoader: Detected an infinite loop of mimic joints.');\n\n }\n\n uniqueJoints.add(joint);\n joint.mimicJoints.forEach(j => {\n\n iterFunction(j);\n\n });\n\n };\n\n iterFunction(j);\n });\n\n obj.frames = {\n ...colliderMap,\n ...visualMap,\n ...linkMap,\n ...jointMap,\n };\n\n return obj;\n\n }\n\n // Process joint nodes and parent them\n function processJoint(joint) {\n\n const children = [ ...joint.children ];\n const jointType = joint.getAttribute('type');\n\n let obj;\n\n const mimicTag = children.find(n => n.nodeName.toLowerCase() === 'mimic');\n if (mimicTag) {\n\n obj = new URDFMimicJoint();\n obj.mimicJoint = mimicTag.getAttribute('joint');\n obj.multiplier = parseFloat(mimicTag.getAttribute('multiplier') || 1.0);\n obj.offset = parseFloat(mimicTag.getAttribute('offset') || 0.0);\n\n } else {\n\n obj = new URDFJoint();\n\n }\n\n obj.urdfNode = joint;\n obj.name = joint.getAttribute('name');\n obj.urdfName = obj.name;\n obj.jointType = jointType;\n\n let parent = null;\n let child = null;\n let xyz = [0, 0, 0];\n let rpy = [0, 0, 0];\n\n // Extract the attributes\n children.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'origin') {\n\n xyz = processTuple(n.getAttribute('xyz'));\n rpy = processTuple(n.getAttribute('rpy'));\n\n } else if (type === 'child') {\n\n child = linkMap[n.getAttribute('link')];\n\n } else if (type === 'parent') {\n\n parent = linkMap[n.getAttribute('link')];\n\n } else if (type === 'limit') {\n\n obj.limit.lower = parseFloat(n.getAttribute('lower') || obj.limit.lower);\n obj.limit.upper = parseFloat(n.getAttribute('upper') || obj.limit.upper);\n\n }\n });\n\n // Join the links\n parent.add(obj);\n obj.add(child);\n applyRotation(obj, rpy);\n obj.position.set(xyz[0], xyz[1], xyz[2]);\n\n // Set up the rotate function\n const axisNode = children.filter(n => n.nodeName.toLowerCase() === 'axis')[0];\n\n if (axisNode) {\n\n const axisXYZ = axisNode.getAttribute('xyz').split(/\\s+/g).map(num => parseFloat(num));\n obj.axis = new THREE.Vector3(axisXYZ[0], axisXYZ[1], axisXYZ[2]);\n obj.axis.normalize();\n\n }\n\n return obj;\n\n }\n\n // Process the <link> nodes\n function processLink(link, visualMap, colliderMap, target = null) {\n\n if (target === null) {\n\n target = new URDFLink();\n\n }\n\n const children = [ ...link.children ];\n target.name = link.getAttribute('name');\n target.urdfName = target.name;\n target.urdfNode = link;\n\n if (parseVisual) {\n\n const visualNodes = children.filter(n => n.nodeName.toLowerCase() === 'visual');\n visualNodes.forEach(vn => {\n\n const v = processLinkElement(vn, materialMap);\n target.add(v);\n\n if (vn.hasAttribute('name')) {\n\n const name = vn.getAttribute('name');\n v.name = name;\n v.urdfName = name;\n visualMap[name] = v;\n\n }\n\n });\n\n }\n\n if (parseCollision) {\n\n const collisionNodes = children.filter(n => n.nodeName.toLowerCase() === 'collision');\n collisionNodes.forEach(cn => {\n\n const c = processLinkElement(cn);\n target.add(c);\n\n if (cn.hasAttribute('name')) {\n\n const name = cn.getAttribute('name');\n c.name = name;\n c.urdfName = name;\n colliderMap[name] = c;\n\n }\n\n });\n\n }\n\n return target;\n\n }\n\n function processMaterial(node) {\n\n const matNodes = [ ...node.children ];\n const material = new THREE.MeshPhongMaterial();\n\n material.name = node.getAttribute('name') || '';\n matNodes.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'color') {\n\n const rgba =\n n\n .getAttribute('rgba')\n .split(/\\s/g)\n .map(v => parseFloat(v));\n\n material.color.setRGB(rgba[0], rgba[1], rgba[2]);\n material.opacity = rgba[3];\n material.transparent = rgba[3] < 1;\n material.depthWrite = !material.transparent;\n\n } else if (type === 'texture') {\n\n // The URDF spec does not require that the <texture/> tag include\n // a filename attribute so skip loading the texture if not provided.\n const filename = n.getAttribute('filename');\n if (filename) {\n\n const loader = new THREE.TextureLoader(manager);\n const filePath = resolvePath(filename);\n material.map = loader.load(filePath);\n material.map.colorSpace = THREE.SRGBColorSpace;\n\n }\n\n }\n });\n\n return material;\n\n }\n\n // Process the visual and collision nodes into meshes\n function processLinkElement(vn, materialMap = {}) {\n\n const isCollisionNode = vn.nodeName.toLowerCase() === 'collision';\n const children = [ ...vn.children ];\n let material = null;\n\n // get the material first\n const materialNode = children.filter(n => n.nodeName.toLowerCase() === 'material')[0];\n if (materialNode) {\n\n const name = materialNode.getAttribute('name');\n if (name && name in materialMap) {\n\n material = materialMap[name];\n\n } else {\n\n material = processMaterial(materialNode);\n\n }\n\n } else {\n\n material = new THREE.MeshPhongMaterial();\n\n }\n\n const group = isCollisionNode ? new URDFCollider() : new URDFVisual();\n group.urdfNode = vn;\n\n children.forEach(n => {\n\n const type = n.nodeName.toLowerCase();\n if (type === 'geometry') {\n\n const geoType = n.children[0].nodeName.toLowerCase();\n if (geoType === 'mesh') {\n\n const filename = n.children[0].getAttribute('filename');\n const filePath = resolvePath(filename);\n\n // file path is null if a package directory is not provided.\n if (filePath !== null) {\n\n const scaleAttr = n.children[0].getAttribute('scale');\n if (scaleAttr) {\n\n const scale = processTuple(scaleAttr);\n group.scale.set(scale[0], scale[1], scale[2]);\n\n }\n\n loadMeshCb(filePath, manager, (obj, err) => {\n\n if (err) {\n\n console.error('URDFLoader: Error loading mesh.', err);\n\n } else if (obj) {\n\n if (obj instanceof THREE.Mesh) {\n\n obj.material = material;\n\n }\n\n // We don't expect non identity rotations or positions. In the case of\n // COLLADA files the model might come in with a custom scale for unit\n // conversion.\n obj.position.set(0, 0, 0);\n obj.quaternion.identity();\n group.add(obj);\n\n }\n\n });\n\n }\n\n } else if (geoType === 'box') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.BoxGeometry(1, 1, 1);\n primitiveModel.material = material;\n\n const size = processTuple(n.children[0].getAttribute('size'));\n primitiveModel.scale.set(size[0], size[1], size[2]);\n\n group.add(primitiveModel);\n\n } else if (geoType === 'sphere') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.SphereGeometry(1, 30, 30);\n primitiveModel.material = material;\n\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\n primitiveModel.scale.set(radius, radius, radius);\n\n group.add(primitiveModel);\n\n } else if (geoType === 'cylinder') {\n\n const primitiveModel = new THREE.Mesh();\n primitiveModel.geometry = new THREE.CylinderGeometry(1, 1, 1, 30);\n primitiveModel.material = material;\n\n const radius = parseFloat(n.children[0].getAttribute('radius')) || 0;\n const length = parseFloat(n.children[0].getAttribute('length')) || 0;\n primitiveModel.scale.set(radius, length, radius);\n primitiveModel.rotation.set(Math.PI / 2, 0, 0);\n\n group.add(primitiveModel);\n\n }\n\n } else if (type === 'origin') {\n\n const xyz = processTuple(n.getAttribute('xyz'));\n const rpy = processTuple(n.getAttribute('rpy'));\n\n group.position.set(xyz[0], xyz[1], xyz[2]);\n group.rotation.set(0, 0, 0);\n applyRotation(group, rpy);\n\n }\n\n });\n\n return group;\n\n }\n\n return processUrdf(content);\n\n }\n\n // Default mesh loading function\n defaultMeshLoader(path, manager, done) {\n\n if (/\\.stl$/i.test(path)) {\n\n const loader = new STLLoader(manager);\n loader.load(path, geom => {\n const mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial());\n done(mesh);\n });\n\n } else if (/\\.dae$/i.test(path)) {\n\n const loader = new ColladaLoader(manager);\n loader.load(path, dae => done(dae.scene));\n\n } else {\n\n console.warn(`URDFLoader: Could not load model at ${ path }.\\nNo loader available`);\n\n }\n\n }\n\n};\n"],"names":["Object3D","Vector3","THREE","STLLoader","ColladaLoader"],"mappings":"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"}
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
get displayShadow() { return this.hasAttribute('display-shadow') || false; }
|
|
65
65
|
set displayShadow(val) { val ? this.setAttribute('display-shadow', '') : this.removeAttribute('display-shadow'); }
|
|
66
66
|
|
|
67
|
-
get ambientColor() { return this.getAttribute('ambient-color') || '#
|
|
67
|
+
get ambientColor() { return this.getAttribute('ambient-color') || '#8ea0a8'; }
|
|
68
68
|
set ambientColor(val) { val ? this.setAttribute('ambient-color', val) : this.removeAttribute('ambient-color'); }
|
|
69
69
|
|
|
70
70
|
get autoRedraw() { return this.hasAttribute('auto-redraw') || false; }
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
renderer.setClearAlpha(0);
|
|
144
144
|
renderer.shadowMap.enabled = true;
|
|
145
145
|
renderer.shadowMap.type = THREE__namespace.PCFSoftShadowMap;
|
|
146
|
-
renderer.
|
|
146
|
+
renderer.outputColorSpace = THREE__namespace.SRGBColorSpace;
|
|
147
147
|
|
|
148
148
|
// Camera setup
|
|
149
149
|
const camera = new THREE__namespace.PerspectiveCamera(75, 1, 0.1, 1000);
|
|
@@ -478,7 +478,7 @@
|
|
|
478
478
|
|
|
479
479
|
if (m.map) {
|
|
480
480
|
|
|
481
|
-
m.map.
|
|
481
|
+
m.map.colorSpace = THREE__namespace.SRGBColorSpace;
|
|
482
482
|
|
|
483
483
|
}
|
|
484
484
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urdf-viewer-element.js","sources":["../src/urdf-viewer-element.js"],"sourcesContent":["import * as THREE from 'three';\nimport { MeshPhongMaterial } from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\nimport URDFLoader from './URDFLoader.js';\n\nconst tempVec2 = new THREE.Vector2();\nconst emptyRaycast = () => {};\n\n// urdf-viewer element\n// Loads and displays a 3D view of a URDF-formatted robot\n\n// Events\n// urdf-change: Fires when the URDF has finished loading and getting processed\n// urdf-processed: Fires when the URDF has finished loading and getting processed\n// geometry-loaded: Fires when all the geometry has been fully loaded\n// ignore-limits-change: Fires when the 'ignore-limits' attribute changes\n// angle-change: Fires when an angle changes\nexport default\nclass URDFViewer extends HTMLElement {\n\n static get observedAttributes() {\n\n return ['package', 'urdf', 'up', 'display-shadow', 'ambient-color', 'ignore-limits', 'show-collision'];\n\n }\n\n get package() { return this.getAttribute('package') || ''; }\n set package(val) { this.setAttribute('package', val); }\n\n get urdf() { return this.getAttribute('urdf') || ''; }\n set urdf(val) { this.setAttribute('urdf', val); }\n\n get ignoreLimits() { return this.hasAttribute('ignore-limits') || false; }\n set ignoreLimits(val) { val ? this.setAttribute('ignore-limits', val) : this.removeAttribute('ignore-limits'); }\n\n get up() { return this.getAttribute('up') || '+Z'; }\n set up(val) { this.setAttribute('up', val); }\n\n get displayShadow() { return this.hasAttribute('display-shadow') || false; }\n set displayShadow(val) { val ? this.setAttribute('display-shadow', '') : this.removeAttribute('display-shadow'); }\n\n get ambientColor() { return this.getAttribute('ambient-color') || '#455A64'; }\n set ambientColor(val) { val ? this.setAttribute('ambient-color', val) : this.removeAttribute('ambient-color'); }\n\n get autoRedraw() { return this.hasAttribute('auto-redraw') || false; }\n set autoRedraw(val) { val ? this.setAttribute('auto-redraw', true) : this.removeAttribute('auto-redraw'); }\n\n get noAutoRecenter() { return this.hasAttribute('no-auto-recenter') || false; }\n set noAutoRecenter(val) { val ? this.setAttribute('no-auto-recenter', true) : this.removeAttribute('no-auto-recenter'); }\n\n get showCollision() { return this.hasAttribute('show-collision') || false; }\n set showCollision(val) { val ? this.setAttribute('show-collision', true) : this.removeAttribute('show-collision'); }\n\n get jointValues() {\n\n const values = {};\n if (this.robot) {\n\n for (const name in this.robot.joints) {\n\n const joint = this.robot.joints[name];\n values[name] = joint.jointValue.length === 1 ? joint.angle : [...joint.jointValue];\n\n }\n\n }\n\n return values;\n\n }\n set jointValues(val) { this.setJointValues(val); }\n\n get angles() {\n\n return this.jointValues;\n\n }\n set angles(v) {\n\n this.jointValues = v;\n\n }\n\n /* Lifecycle Functions */\n constructor() {\n\n super();\n\n this._requestId = 0;\n this._dirty = false;\n this._loadScheduled = false;\n this.robot = null;\n this.loadMeshFunc = null;\n this.urlModifierFunc = null;\n\n // Scene setup\n const scene = new THREE.Scene();\n\n const ambientLight = new THREE.HemisphereLight(this.ambientColor, '#000');\n ambientLight.groundColor.lerp(ambientLight.color, 0.5);\n ambientLight.intensity = 0.5;\n ambientLight.position.set(0, 1, 0);\n scene.add(ambientLight);\n\n // Light setup\n const dirLight = new THREE.DirectionalLight(0xffffff);\n dirLight.position.set(4, 10, 1);\n dirLight.shadow.mapSize.width = 2048;\n dirLight.shadow.mapSize.height = 2048;\n dirLight.shadow.normalBias = 0.001;\n dirLight.castShadow = true;\n scene.add(dirLight);\n scene.add(dirLight.target);\n\n // Renderer setup\n const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\n renderer.setClearColor(0xffffff);\n renderer.setClearAlpha(0);\n renderer.shadowMap.enabled = true;\n renderer.shadowMap.type = THREE.PCFSoftShadowMap;\n renderer.outputEncoding = THREE.sRGBEncoding;\n\n // Camera setup\n const camera = new THREE.PerspectiveCamera(75, 1, 0.1, 1000);\n camera.position.z = -10;\n\n // World setup\n const world = new THREE.Object3D();\n scene.add(world);\n\n const plane = new THREE.Mesh(\n new THREE.PlaneBufferGeometry(40, 40),\n new THREE.ShadowMaterial({ side: THREE.DoubleSide, transparent: true, opacity: 0.5 }),\n );\n plane.rotation.x = -Math.PI / 2;\n plane.position.y = -0.5;\n plane.receiveShadow = true;\n plane.scale.set(10, 10, 10);\n scene.add(plane);\n\n // Controls setup\n const controls = new OrbitControls(camera, renderer.domElement);\n controls.rotateSpeed = 2.0;\n controls.zoomSpeed = 5;\n controls.panSpeed = 2;\n controls.enableZoom = true;\n controls.enableDamping = false;\n controls.maxDistance = 50;\n controls.minDistance = 0.25;\n controls.addEventListener('change', () => this.recenter());\n\n this.scene = scene;\n this.world = world;\n this.renderer = renderer;\n this.camera = camera;\n this.controls = controls;\n this.plane = plane;\n this.directionalLight = dirLight;\n this.ambientLight = ambientLight;\n\n this._setUp(this.up);\n\n this._collisionMaterial = new MeshPhongMaterial({\n transparent: true,\n opacity: 0.35,\n shininess: 2.5,\n premultipliedAlpha: true,\n color: 0xffbe38,\n polygonOffset: true,\n polygonOffsetFactor: -1,\n polygonOffsetUnits: -1,\n });\n\n const _renderLoop = () => {\n\n if (this.parentNode) {\n\n this.updateSize();\n\n if (this._dirty || this.autoRedraw) {\n\n if (!this.noAutoRecenter) {\n\n this._updateEnvironment();\n }\n\n this.renderer.render(scene, camera);\n this._dirty = false;\n\n }\n\n // update controls after the environment in\n // case the controls are retargeted\n this.controls.update();\n\n }\n this._renderLoopId = requestAnimationFrame(_renderLoop);\n\n };\n _renderLoop();\n\n }\n\n connectedCallback() {\n\n // Add our initialize styles for the element if they haven't\n // been added yet\n if (!this.constructor._styletag) {\n\n const styletag = document.createElement('style');\n styletag.innerHTML =\n `\n ${ this.tagName } { display: block; }\n ${ this.tagName } canvas {\n width: 100%;\n height: 100%;\n }\n `;\n document.head.appendChild(styletag);\n this.constructor._styletag = styletag;\n\n }\n\n // add the renderer\n if (this.childElementCount === 0) {\n\n this.appendChild(this.renderer.domElement);\n\n }\n\n this.updateSize();\n requestAnimationFrame(() => this.updateSize());\n\n }\n\n disconnectedCallback() {\n\n cancelAnimationFrame(this._renderLoopId);\n\n }\n\n attributeChangedCallback(attr, oldval, newval) {\n\n this._updateCollisionVisibility();\n if (!this.noAutoRecenter) {\n this.recenter();\n }\n\n switch (attr) {\n\n case 'package':\n case 'urdf': {\n\n this._scheduleLoad();\n break;\n\n }\n\n case 'up': {\n\n this._setUp(this.up);\n break;\n\n }\n\n case 'ambient-color': {\n\n this.ambientLight.color.set(this.ambientColor);\n this.ambientLight.groundColor.set('#000').lerp(this.ambientLight.color, 0.5);\n break;\n\n }\n\n case 'ignore-limits': {\n\n this._setIgnoreLimits(this.ignoreLimits, true);\n break;\n\n }\n\n }\n\n }\n\n /* Public API */\n updateSize() {\n\n const r = this.renderer;\n const w = this.clientWidth;\n const h = this.clientHeight;\n const currSize = r.getSize(tempVec2);\n\n if (currSize.width !== w || currSize.height !== h) {\n\n this.recenter();\n\n }\n\n r.setPixelRatio(window.devicePixelRatio);\n r.setSize(w, h, false);\n\n this.camera.aspect = w / h;\n this.camera.updateProjectionMatrix();\n\n }\n\n redraw() {\n\n this._dirty = true;\n }\n\n recenter() {\n\n this._updateEnvironment();\n this.redraw();\n\n }\n\n // Set the joint with jointName to\n // angle in degrees\n setJointValue(jointName, ...values) {\n\n if (!this.robot) return;\n if (!this.robot.joints[jointName]) return;\n\n if (this.robot.joints[jointName].setJointValue(...values)) {\n\n this.redraw();\n this.dispatchEvent(new CustomEvent('angle-change', { bubbles: true, cancelable: true, detail: jointName }));\n\n }\n\n }\n\n setJointValues(values) {\n\n for (const name in values) this.setJointValue(name, values[name]);\n\n }\n\n /* Private Functions */\n // Updates the position of the plane to be at the\n // lowest point below the robot and focuses the\n // camera on the center of the scene\n _updateEnvironment() {\n\n const robot = this.robot;\n if (!robot) return;\n\n this.world.updateMatrixWorld();\n\n const bbox = new THREE.Box3();\n bbox.makeEmpty();\n robot.traverse(c => {\n if (c.isURDFVisual) {\n bbox.expandByObject(c);\n }\n });\n\n const center = bbox.getCenter(new THREE.Vector3());\n this.controls.target.y = center.y;\n this.plane.position.y = bbox.min.y - 1e-3;\n\n const dirLight = this.directionalLight;\n dirLight.castShadow = this.displayShadow;\n\n if (this.displayShadow) {\n\n // Update the shadow camera rendering bounds to encapsulate the\n // model. We use the bounding sphere of the bounding box for\n // simplicity -- this could be a tighter fit.\n const sphere = bbox.getBoundingSphere(new THREE.Sphere());\n const minmax = sphere.radius;\n const cam = dirLight.shadow.camera;\n cam.left = cam.bottom = -minmax;\n cam.right = cam.top = minmax;\n\n // Update the camera to focus on the center of the model so the\n // shadow can encapsulate it\n const offset = dirLight.position.clone().sub(dirLight.target.position);\n dirLight.target.position.copy(center);\n dirLight.position.copy(center).add(offset);\n\n cam.updateProjectionMatrix();\n\n }\n\n }\n\n _scheduleLoad() {\n\n // if our current model is already what's being requested\n // or has been loaded then early out\n if (this._prevload === `${ this.package }|${ this.urdf }`) return;\n this._prevload = `${ this.package }|${ this.urdf }`;\n\n // if we're already waiting on a load then early out\n if (this._loadScheduled) return;\n this._loadScheduled = true;\n\n if (this.robot) {\n\n this.robot.traverse(c => c.dispose && c.dispose());\n this.robot.parent.remove(this.robot);\n this.robot = null;\n\n }\n\n requestAnimationFrame(() => {\n\n this._loadUrdf(this.package, this.urdf);\n this._loadScheduled = false;\n\n });\n\n }\n\n // Watch the package and urdf field and load the robot model.\n // This should _only_ be called from _scheduleLoad because that\n // ensures the that current robot has been removed\n _loadUrdf(pkg, urdf) {\n\n this.dispatchEvent(new CustomEvent('urdf-change', { bubbles: true, cancelable: true, composed: true }));\n\n if (urdf) {\n\n // Keep track of this request and make\n // sure it doesn't get overwritten by\n // a subsequent one\n this._requestId++;\n const requestId = this._requestId;\n\n const updateMaterials = mesh => {\n\n mesh.traverse(c => {\n\n if (c.isMesh) {\n\n c.castShadow = true;\n c.receiveShadow = true;\n\n if (c.material) {\n\n const mats =\n (Array.isArray(c.material) ? c.material : [c.material])\n .map(m => {\n\n if (m instanceof THREE.MeshBasicMaterial) {\n\n m = new THREE.MeshPhongMaterial();\n\n }\n\n if (m.map) {\n\n m.map.encoding = THREE.GammaEncoding;\n\n }\n\n return m;\n\n });\n c.material = mats.length === 1 ? mats[0] : mats;\n\n }\n\n }\n\n });\n\n };\n\n if (pkg.includes(':') && (pkg.split(':')[1].substring(0, 2)) !== '//') {\n // E.g. pkg = \"pkg_name: path/to/pkg_name, pk2: path2/to/pk2\"}\n\n // Convert pkg(s) into a map. E.g.\n // { \"pkg_name\": \"path/to/pkg_name\",\n // \"pk2\": \"path2/to/pk2\" }\n\n pkg = pkg.split(',').reduce((map, value) => {\n\n const split = value.split(/:/).filter(x => !!x);\n const pkgName = split.shift().trim();\n const pkgPath = split.join(':').trim();\n map[pkgName] = pkgPath;\n\n return map;\n\n }, {});\n }\n\n let robot = null;\n const manager = new THREE.LoadingManager();\n manager.onLoad = () => {\n\n // If another request has come in to load a new\n // robot, then ignore this one\n if (this._requestId !== requestId) {\n\n robot.traverse(c => c.dispose && c.dispose());\n return;\n\n }\n\n this.robot = robot;\n this.world.add(robot);\n updateMaterials(robot);\n\n this._setIgnoreLimits(this.ignoreLimits);\n this._updateCollisionVisibility();\n\n this.dispatchEvent(new CustomEvent('urdf-processed', { bubbles: true, cancelable: true, composed: true }));\n this.dispatchEvent(new CustomEvent('geometry-loaded', { bubbles: true, cancelable: true, composed: true }));\n\n this.recenter();\n\n };\n\n if (this.urlModifierFunc) {\n\n manager.setURLModifier(this.urlModifierFunc);\n\n }\n\n const loader = new URDFLoader(manager);\n loader.packages = pkg;\n loader.loadMeshCb = this.loadMeshFunc;\n loader.fetchOptions = { mode: 'cors', credentials: 'same-origin' };\n loader.parseCollision = true;\n loader.load(urdf, model => robot = model);\n\n }\n\n }\n\n _updateCollisionVisibility() {\n\n const showCollision = this.showCollision;\n const collisionMaterial = this._collisionMaterial;\n const robot = this.robot;\n\n if (robot === null) return;\n\n const colliders = [];\n robot.traverse(c => {\n\n if (c.isURDFCollider) {\n\n c.visible = showCollision;\n colliders.push(c);\n\n }\n\n });\n\n colliders.forEach(coll => {\n\n coll.traverse(c => {\n\n if (c.isMesh) {\n\n c.raycast = emptyRaycast;\n c.material = collisionMaterial;\n c.castShadow = false;\n\n }\n\n });\n\n });\n\n }\n\n // Watch the coordinate frame and update the\n // rotation of the scene to match\n _setUp(up) {\n\n if (!up) up = '+Z';\n up = up.toUpperCase();\n const sign = up.replace(/[^-+]/g, '')[0] || '+';\n const axis = up.replace(/[^XYZ]/gi, '')[0] || 'Z';\n\n const PI = Math.PI;\n const HALFPI = PI / 2;\n if (axis === 'X') this.world.rotation.set(0, 0, sign === '+' ? HALFPI : -HALFPI);\n if (axis === 'Z') this.world.rotation.set(sign === '+' ? -HALFPI : HALFPI, 0, 0);\n if (axis === 'Y') this.world.rotation.set(sign === '+' ? 0 : PI, 0, 0);\n\n }\n\n // Updates the current robot's angles to ignore\n // joint limits or not\n _setIgnoreLimits(ignore, dispatch = false) {\n\n if (this.robot) {\n\n Object\n .values(this.robot.joints)\n .forEach(joint => {\n\n joint.ignoreLimits = ignore;\n joint.setJointValue(...joint.jointValue);\n\n });\n\n }\n\n if (dispatch) {\n\n this.dispatchEvent(new CustomEvent('ignore-limits-change', { bubbles: true, cancelable: true, composed: true }));\n\n }\n\n }\n\n};\n"],"names":["THREE","OrbitControls","MeshPhongMaterial","URDFLoader"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"urdf-viewer-element.js","sources":["../src/urdf-viewer-element.js"],"sourcesContent":["import * as THREE from 'three';\nimport { MeshPhongMaterial } from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\nimport URDFLoader from './URDFLoader.js';\n\nconst tempVec2 = new THREE.Vector2();\nconst emptyRaycast = () => {};\n\n// urdf-viewer element\n// Loads and displays a 3D view of a URDF-formatted robot\n\n// Events\n// urdf-change: Fires when the URDF has finished loading and getting processed\n// urdf-processed: Fires when the URDF has finished loading and getting processed\n// geometry-loaded: Fires when all the geometry has been fully loaded\n// ignore-limits-change: Fires when the 'ignore-limits' attribute changes\n// angle-change: Fires when an angle changes\nexport default\nclass URDFViewer extends HTMLElement {\n\n static get observedAttributes() {\n\n return ['package', 'urdf', 'up', 'display-shadow', 'ambient-color', 'ignore-limits', 'show-collision'];\n\n }\n\n get package() { return this.getAttribute('package') || ''; }\n set package(val) { this.setAttribute('package', val); }\n\n get urdf() { return this.getAttribute('urdf') || ''; }\n set urdf(val) { this.setAttribute('urdf', val); }\n\n get ignoreLimits() { return this.hasAttribute('ignore-limits') || false; }\n set ignoreLimits(val) { val ? this.setAttribute('ignore-limits', val) : this.removeAttribute('ignore-limits'); }\n\n get up() { return this.getAttribute('up') || '+Z'; }\n set up(val) { this.setAttribute('up', val); }\n\n get displayShadow() { return this.hasAttribute('display-shadow') || false; }\n set displayShadow(val) { val ? this.setAttribute('display-shadow', '') : this.removeAttribute('display-shadow'); }\n\n get ambientColor() { return this.getAttribute('ambient-color') || '#8ea0a8'; }\n set ambientColor(val) { val ? this.setAttribute('ambient-color', val) : this.removeAttribute('ambient-color'); }\n\n get autoRedraw() { return this.hasAttribute('auto-redraw') || false; }\n set autoRedraw(val) { val ? this.setAttribute('auto-redraw', true) : this.removeAttribute('auto-redraw'); }\n\n get noAutoRecenter() { return this.hasAttribute('no-auto-recenter') || false; }\n set noAutoRecenter(val) { val ? this.setAttribute('no-auto-recenter', true) : this.removeAttribute('no-auto-recenter'); }\n\n get showCollision() { return this.hasAttribute('show-collision') || false; }\n set showCollision(val) { val ? this.setAttribute('show-collision', true) : this.removeAttribute('show-collision'); }\n\n get jointValues() {\n\n const values = {};\n if (this.robot) {\n\n for (const name in this.robot.joints) {\n\n const joint = this.robot.joints[name];\n values[name] = joint.jointValue.length === 1 ? joint.angle : [...joint.jointValue];\n\n }\n\n }\n\n return values;\n\n }\n set jointValues(val) { this.setJointValues(val); }\n\n get angles() {\n\n return this.jointValues;\n\n }\n set angles(v) {\n\n this.jointValues = v;\n\n }\n\n /* Lifecycle Functions */\n constructor() {\n\n super();\n\n this._requestId = 0;\n this._dirty = false;\n this._loadScheduled = false;\n this.robot = null;\n this.loadMeshFunc = null;\n this.urlModifierFunc = null;\n\n // Scene setup\n const scene = new THREE.Scene();\n\n const ambientLight = new THREE.HemisphereLight(this.ambientColor, '#000');\n ambientLight.groundColor.lerp(ambientLight.color, 0.5);\n ambientLight.intensity = 0.5;\n ambientLight.position.set(0, 1, 0);\n scene.add(ambientLight);\n\n // Light setup\n const dirLight = new THREE.DirectionalLight(0xffffff);\n dirLight.position.set(4, 10, 1);\n dirLight.shadow.mapSize.width = 2048;\n dirLight.shadow.mapSize.height = 2048;\n dirLight.shadow.normalBias = 0.001;\n dirLight.castShadow = true;\n scene.add(dirLight);\n scene.add(dirLight.target);\n\n // Renderer setup\n const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\n renderer.setClearColor(0xffffff);\n renderer.setClearAlpha(0);\n renderer.shadowMap.enabled = true;\n renderer.shadowMap.type = THREE.PCFSoftShadowMap;\n renderer.outputColorSpace = THREE.SRGBColorSpace;\n\n // Camera setup\n const camera = new THREE.PerspectiveCamera(75, 1, 0.1, 1000);\n camera.position.z = -10;\n\n // World setup\n const world = new THREE.Object3D();\n scene.add(world);\n\n const plane = new THREE.Mesh(\n new THREE.PlaneBufferGeometry(40, 40),\n new THREE.ShadowMaterial({ side: THREE.DoubleSide, transparent: true, opacity: 0.5 }),\n );\n plane.rotation.x = -Math.PI / 2;\n plane.position.y = -0.5;\n plane.receiveShadow = true;\n plane.scale.set(10, 10, 10);\n scene.add(plane);\n\n // Controls setup\n const controls = new OrbitControls(camera, renderer.domElement);\n controls.rotateSpeed = 2.0;\n controls.zoomSpeed = 5;\n controls.panSpeed = 2;\n controls.enableZoom = true;\n controls.enableDamping = false;\n controls.maxDistance = 50;\n controls.minDistance = 0.25;\n controls.addEventListener('change', () => this.recenter());\n\n this.scene = scene;\n this.world = world;\n this.renderer = renderer;\n this.camera = camera;\n this.controls = controls;\n this.plane = plane;\n this.directionalLight = dirLight;\n this.ambientLight = ambientLight;\n\n this._setUp(this.up);\n\n this._collisionMaterial = new MeshPhongMaterial({\n transparent: true,\n opacity: 0.35,\n shininess: 2.5,\n premultipliedAlpha: true,\n color: 0xffbe38,\n polygonOffset: true,\n polygonOffsetFactor: -1,\n polygonOffsetUnits: -1,\n });\n\n const _renderLoop = () => {\n\n if (this.parentNode) {\n\n this.updateSize();\n\n if (this._dirty || this.autoRedraw) {\n\n if (!this.noAutoRecenter) {\n\n this._updateEnvironment();\n }\n\n this.renderer.render(scene, camera);\n this._dirty = false;\n\n }\n\n // update controls after the environment in\n // case the controls are retargeted\n this.controls.update();\n\n }\n this._renderLoopId = requestAnimationFrame(_renderLoop);\n\n };\n _renderLoop();\n\n }\n\n connectedCallback() {\n\n // Add our initialize styles for the element if they haven't\n // been added yet\n if (!this.constructor._styletag) {\n\n const styletag = document.createElement('style');\n styletag.innerHTML =\n `\n ${ this.tagName } { display: block; }\n ${ this.tagName } canvas {\n width: 100%;\n height: 100%;\n }\n `;\n document.head.appendChild(styletag);\n this.constructor._styletag = styletag;\n\n }\n\n // add the renderer\n if (this.childElementCount === 0) {\n\n this.appendChild(this.renderer.domElement);\n\n }\n\n this.updateSize();\n requestAnimationFrame(() => this.updateSize());\n\n }\n\n disconnectedCallback() {\n\n cancelAnimationFrame(this._renderLoopId);\n\n }\n\n attributeChangedCallback(attr, oldval, newval) {\n\n this._updateCollisionVisibility();\n if (!this.noAutoRecenter) {\n this.recenter();\n }\n\n switch (attr) {\n\n case 'package':\n case 'urdf': {\n\n this._scheduleLoad();\n break;\n\n }\n\n case 'up': {\n\n this._setUp(this.up);\n break;\n\n }\n\n case 'ambient-color': {\n\n this.ambientLight.color.set(this.ambientColor);\n this.ambientLight.groundColor.set('#000').lerp(this.ambientLight.color, 0.5);\n break;\n\n }\n\n case 'ignore-limits': {\n\n this._setIgnoreLimits(this.ignoreLimits, true);\n break;\n\n }\n\n }\n\n }\n\n /* Public API */\n updateSize() {\n\n const r = this.renderer;\n const w = this.clientWidth;\n const h = this.clientHeight;\n const currSize = r.getSize(tempVec2);\n\n if (currSize.width !== w || currSize.height !== h) {\n\n this.recenter();\n\n }\n\n r.setPixelRatio(window.devicePixelRatio);\n r.setSize(w, h, false);\n\n this.camera.aspect = w / h;\n this.camera.updateProjectionMatrix();\n\n }\n\n redraw() {\n\n this._dirty = true;\n }\n\n recenter() {\n\n this._updateEnvironment();\n this.redraw();\n\n }\n\n // Set the joint with jointName to\n // angle in degrees\n setJointValue(jointName, ...values) {\n\n if (!this.robot) return;\n if (!this.robot.joints[jointName]) return;\n\n if (this.robot.joints[jointName].setJointValue(...values)) {\n\n this.redraw();\n this.dispatchEvent(new CustomEvent('angle-change', { bubbles: true, cancelable: true, detail: jointName }));\n\n }\n\n }\n\n setJointValues(values) {\n\n for (const name in values) this.setJointValue(name, values[name]);\n\n }\n\n /* Private Functions */\n // Updates the position of the plane to be at the\n // lowest point below the robot and focuses the\n // camera on the center of the scene\n _updateEnvironment() {\n\n const robot = this.robot;\n if (!robot) return;\n\n this.world.updateMatrixWorld();\n\n const bbox = new THREE.Box3();\n bbox.makeEmpty();\n robot.traverse(c => {\n if (c.isURDFVisual) {\n bbox.expandByObject(c);\n }\n });\n\n const center = bbox.getCenter(new THREE.Vector3());\n this.controls.target.y = center.y;\n this.plane.position.y = bbox.min.y - 1e-3;\n\n const dirLight = this.directionalLight;\n dirLight.castShadow = this.displayShadow;\n\n if (this.displayShadow) {\n\n // Update the shadow camera rendering bounds to encapsulate the\n // model. We use the bounding sphere of the bounding box for\n // simplicity -- this could be a tighter fit.\n const sphere = bbox.getBoundingSphere(new THREE.Sphere());\n const minmax = sphere.radius;\n const cam = dirLight.shadow.camera;\n cam.left = cam.bottom = -minmax;\n cam.right = cam.top = minmax;\n\n // Update the camera to focus on the center of the model so the\n // shadow can encapsulate it\n const offset = dirLight.position.clone().sub(dirLight.target.position);\n dirLight.target.position.copy(center);\n dirLight.position.copy(center).add(offset);\n\n cam.updateProjectionMatrix();\n\n }\n\n }\n\n _scheduleLoad() {\n\n // if our current model is already what's being requested\n // or has been loaded then early out\n if (this._prevload === `${ this.package }|${ this.urdf }`) return;\n this._prevload = `${ this.package }|${ this.urdf }`;\n\n // if we're already waiting on a load then early out\n if (this._loadScheduled) return;\n this._loadScheduled = true;\n\n if (this.robot) {\n\n this.robot.traverse(c => c.dispose && c.dispose());\n this.robot.parent.remove(this.robot);\n this.robot = null;\n\n }\n\n requestAnimationFrame(() => {\n\n this._loadUrdf(this.package, this.urdf);\n this._loadScheduled = false;\n\n });\n\n }\n\n // Watch the package and urdf field and load the robot model.\n // This should _only_ be called from _scheduleLoad because that\n // ensures the that current robot has been removed\n _loadUrdf(pkg, urdf) {\n\n this.dispatchEvent(new CustomEvent('urdf-change', { bubbles: true, cancelable: true, composed: true }));\n\n if (urdf) {\n\n // Keep track of this request and make\n // sure it doesn't get overwritten by\n // a subsequent one\n this._requestId++;\n const requestId = this._requestId;\n\n const updateMaterials = mesh => {\n\n mesh.traverse(c => {\n\n if (c.isMesh) {\n\n c.castShadow = true;\n c.receiveShadow = true;\n\n if (c.material) {\n\n const mats =\n (Array.isArray(c.material) ? c.material : [c.material])\n .map(m => {\n\n if (m instanceof THREE.MeshBasicMaterial) {\n\n m = new THREE.MeshPhongMaterial();\n\n }\n\n if (m.map) {\n\n m.map.colorSpace = THREE.SRGBColorSpace;\n\n }\n\n return m;\n\n });\n c.material = mats.length === 1 ? mats[0] : mats;\n\n }\n\n }\n\n });\n\n };\n\n if (pkg.includes(':') && (pkg.split(':')[1].substring(0, 2)) !== '//') {\n // E.g. pkg = \"pkg_name: path/to/pkg_name, pk2: path2/to/pk2\"}\n\n // Convert pkg(s) into a map. E.g.\n // { \"pkg_name\": \"path/to/pkg_name\",\n // \"pk2\": \"path2/to/pk2\" }\n\n pkg = pkg.split(',').reduce((map, value) => {\n\n const split = value.split(/:/).filter(x => !!x);\n const pkgName = split.shift().trim();\n const pkgPath = split.join(':').trim();\n map[pkgName] = pkgPath;\n\n return map;\n\n }, {});\n }\n\n let robot = null;\n const manager = new THREE.LoadingManager();\n manager.onLoad = () => {\n\n // If another request has come in to load a new\n // robot, then ignore this one\n if (this._requestId !== requestId) {\n\n robot.traverse(c => c.dispose && c.dispose());\n return;\n\n }\n\n this.robot = robot;\n this.world.add(robot);\n updateMaterials(robot);\n\n this._setIgnoreLimits(this.ignoreLimits);\n this._updateCollisionVisibility();\n\n this.dispatchEvent(new CustomEvent('urdf-processed', { bubbles: true, cancelable: true, composed: true }));\n this.dispatchEvent(new CustomEvent('geometry-loaded', { bubbles: true, cancelable: true, composed: true }));\n\n this.recenter();\n\n };\n\n if (this.urlModifierFunc) {\n\n manager.setURLModifier(this.urlModifierFunc);\n\n }\n\n const loader = new URDFLoader(manager);\n loader.packages = pkg;\n loader.loadMeshCb = this.loadMeshFunc;\n loader.fetchOptions = { mode: 'cors', credentials: 'same-origin' };\n loader.parseCollision = true;\n loader.load(urdf, model => robot = model);\n\n }\n\n }\n\n _updateCollisionVisibility() {\n\n const showCollision = this.showCollision;\n const collisionMaterial = this._collisionMaterial;\n const robot = this.robot;\n\n if (robot === null) return;\n\n const colliders = [];\n robot.traverse(c => {\n\n if (c.isURDFCollider) {\n\n c.visible = showCollision;\n colliders.push(c);\n\n }\n\n });\n\n colliders.forEach(coll => {\n\n coll.traverse(c => {\n\n if (c.isMesh) {\n\n c.raycast = emptyRaycast;\n c.material = collisionMaterial;\n c.castShadow = false;\n\n }\n\n });\n\n });\n\n }\n\n // Watch the coordinate frame and update the\n // rotation of the scene to match\n _setUp(up) {\n\n if (!up) up = '+Z';\n up = up.toUpperCase();\n const sign = up.replace(/[^-+]/g, '')[0] || '+';\n const axis = up.replace(/[^XYZ]/gi, '')[0] || 'Z';\n\n const PI = Math.PI;\n const HALFPI = PI / 2;\n if (axis === 'X') this.world.rotation.set(0, 0, sign === '+' ? HALFPI : -HALFPI);\n if (axis === 'Z') this.world.rotation.set(sign === '+' ? -HALFPI : HALFPI, 0, 0);\n if (axis === 'Y') this.world.rotation.set(sign === '+' ? 0 : PI, 0, 0);\n\n }\n\n // Updates the current robot's angles to ignore\n // joint limits or not\n _setIgnoreLimits(ignore, dispatch = false) {\n\n if (this.robot) {\n\n Object\n .values(this.robot.joints)\n .forEach(joint => {\n\n joint.ignoreLimits = ignore;\n joint.setJointValue(...joint.jointValue);\n\n });\n\n }\n\n if (dispatch) {\n\n this.dispatchEvent(new CustomEvent('ignore-limits-change', { bubbles: true, cancelable: true, composed: true }));\n\n }\n\n }\n\n};\n"],"names":["THREE","OrbitControls","MeshPhongMaterial","URDFLoader"],"mappings":"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"}
|