1 |
- {"ast":null,"code":"import { Vector3, Vector2, TmpVectors } from \"../Maths/math.vector.js\";\nimport { VertexBuffer } from \"../Buffers/buffer.js\";\n/**\n * Information about the result of picking within a scene\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/interactions/picking_collisions\n */\nexport class PickingInfo {\n constructor() {\n /**\n * If the pick collided with an object\n */\n this.hit = false;\n /**\n * Distance away where the pick collided\n */\n this.distance = 0;\n /**\n * The location of pick collision\n */\n this.pickedPoint = null;\n /**\n * The mesh corresponding the pick collision\n */\n this.pickedMesh = null;\n /** (See getTextureCoordinates) The barycentric U coordinate that is used when calculating the texture coordinates of the collision.*/\n this.bu = 0;\n /** (See getTextureCoordinates) The barycentric V coordinate that is used when calculating the texture coordinates of the collision.*/\n this.bv = 0;\n /** The index of the face on the mesh that was picked, or the index of the Line if the picked Mesh is a LinesMesh */\n this.faceId = -1;\n /** The index of the face on the subMesh that was picked, or the index of the Line if the picked Mesh is a LinesMesh */\n this.subMeshFaceId = -1;\n /** Id of the submesh that was picked */\n this.subMeshId = 0;\n /** If a sprite was picked, this will be the sprite the pick collided with */\n this.pickedSprite = null;\n /** If we are picking a mesh with thin instance, this will give you the picked thin instance */\n this.thinInstanceIndex = -1;\n /**\n * The ray that was used to perform the picking.\n */\n this.ray = null;\n /**\n * If a mesh was used to do the picking (eg. 6dof controller) as a \"near interaction\", this will be populated.\n */\n this.originMesh = null;\n /**\n * The aim-space transform of the input used for picking, if it is an XR input source.\n */\n this.aimTransform = null;\n /**\n * The grip-space transform of the input used for picking, if it is an XR input source.\n * Some XR sources, such as input coming from head mounted displays, do not have this.\n */\n this.gripTransform = null;\n }\n /**\n * Gets the normal corresponding to the face the pick collided with\n * @param useWorldCoordinates If the resulting normal should be relative to the world (default: false)\n * @param useVerticesNormals If the vertices normals should be used to calculate the normal instead of the normal map (default: true)\n * @returns The normal corresponding to the face the pick collided with\n * @remarks Note that the returned normal will always point towards the picking ray.\n */\n getNormal(useWorldCoordinates = false, useVerticesNormals = true) {\n var _indices;\n if (!this.pickedMesh || useVerticesNormals && !this.pickedMesh.isVerticesDataPresent(VertexBuffer.NormalKind)) {\n return null;\n }\n let indices = this.pickedMesh.getIndices();\n if (((_indices = indices) === null || _indices === void 0 ? void 0 : _indices.length) === 0) {\n indices = null;\n }\n let result;\n const tmp0 = TmpVectors.Vector3[0];\n const tmp1 = TmpVectors.Vector3[1];\n const tmp2 = TmpVectors.Vector3[2];\n if (useVerticesNormals) {\n const normals = this.pickedMesh.getVerticesData(VertexBuffer.NormalKind);\n let normal0 = indices ? Vector3.FromArrayToRef(normals, indices[this.faceId * 3] * 3, tmp0) : tmp0.copyFromFloats(normals[this.faceId * 3 * 3], normals[this.faceId * 3 * 3 + 1], normals[this.faceId * 3 * 3 + 2]);\n let normal1 = indices ? Vector3.FromArrayToRef(normals, indices[this.faceId * 3 + 1] * 3, tmp1) : tmp1.copyFromFloats(normals[(this.faceId * 3 + 1) * 3], normals[(this.faceId * 3 + 1) * 3 + 1], normals[(this.faceId * 3 + 1) * 3 + 2]);\n let normal2 = indices ? Vector3.FromArrayToRef(normals, indices[this.faceId * 3 + 2] * 3, tmp2) : tmp2.copyFromFloats(normals[(this.faceId * 3 + 2) * 3], normals[(this.faceId * 3 + 2) * 3 + 1], normals[(this.faceId * 3 + 2) * 3 + 2]);\n normal0 = normal0.scale(this.bu);\n normal1 = normal1.scale(this.bv);\n normal2 = normal2.scale(1.0 - this.bu - this.bv);\n result = new Vector3(normal0.x + normal1.x + normal2.x, normal0.y + normal1.y + normal2.y, normal0.z + normal1.z + normal2.z);\n } else {\n const positions = this.pickedMesh.getVerticesData(VertexBuffer.PositionKind);\n const vertex1 = indices ? Vector3.FromArrayToRef(positions, indices[this.faceId * 3] * 3, tmp0) : tmp0.copyFromFloats(positions[this.faceId * 3 * 3], positions[this.faceId * 3 * 3 + 1], positions[this.faceId * 3 * 3 + 2]);\n const vertex2 = indices ? Vector3.FromArrayToRef(positions, indices[this.faceId * 3 + 1] * 3, tmp1) : tmp1.copyFromFloats(positions[(this.faceId * 3 + 1) * 3], positions[(this.faceId * 3 + 1) * 3 + 1], positions[(this.faceId * 3 + 1) * 3 + 2]);\n const vertex3 = indices ? Vector3.FromArrayToRef(positions, indices[this.faceId * 3 + 2] * 3, tmp2) : tmp2.copyFromFloats(positions[(this.faceId * 3 + 2) * 3], positions[(this.faceId * 3 + 2) * 3 + 1], positions[(this.faceId * 3 + 2) * 3 + 2]);\n const p1p2 = vertex1.subtract(vertex2);\n const p3p2 = vertex3.subtract(vertex2);\n result = Vector3.Cross(p1p2, p3p2);\n }\n const transformNormalToWorld = (pickedMesh, n) => {\n let wm = pickedMesh.getWorldMatrix();\n if (pickedMesh.nonUniformScaling) {\n TmpVectors.Matrix[0].copyFrom(wm);\n wm = TmpVectors.Matrix[0];\n wm.setTranslationFromFloats(0, 0, 0);\n wm.invert();\n wm.transposeToRef(TmpVectors.Matrix[1]);\n wm = TmpVectors.Matrix[1];\n }\n Vector3.TransformNormalToRef(n, wm, n);\n };\n if (useWorldCoordinates) {\n transformNormalToWorld(this.pickedMesh, result);\n }\n if (this.ray) {\n const normalForDirectionChecking = TmpVectors.Vector3[0].copyFrom(result);\n if (!useWorldCoordinates) {\n // the normal has not been transformed to world space as part as the normal processing, so we must do it now\n transformNormalToWorld(this.pickedMesh, normalForDirectionChecking);\n }\n // Flip the normal if the picking ray is in the same direction.\n if (Vector3.Dot(normalForDirectionChecking, this.ray.direction) > 0) {\n result.negateInPlace();\n }\n }\n result.normalize();\n return result;\n }\n /**\n * Gets the texture coordinates of where the pick occurred\n * @param uvSet The UV set to use to calculate the texture coordinates (default: VertexBuffer.UVKind)\n * @returns The vector containing the coordinates of the texture\n */\n getTextureCoordinates(uvSet = VertexBuffer.UVKind) {\n if (!this.pickedMesh || !this.pickedMesh.isVerticesDataPresent(uvSet)) {\n return null;\n }\n const indices = this.pickedMesh.getIndices();\n if (!indices) {\n return null;\n }\n const uvs = this.pickedMesh.getVerticesData(uvSet);\n if (!uvs) {\n return null;\n }\n let uv0 = Vector2.FromArray(uvs, indices[this.faceId * 3] * 2);\n let uv1 = Vector2.FromArray(uvs, indices[this.faceId * 3 + 1] * 2);\n let uv2 = Vector2.FromArray(uvs, indices[this.faceId * 3 + 2] * 2);\n uv0 = uv0.scale(this.bu);\n uv1 = uv1.scale(this.bv);\n uv2 = uv2.scale(1.0 - this.bu - this.bv);\n return new Vector2(uv0.x + uv1.x + uv2.x, uv0.y + uv1.y + uv2.y);\n }\n}","map":{"version":3,"names":["Vector3","Vector2","TmpVectors","VertexBuffer","PickingInfo","constructor","hit","distance","pickedPoint","pickedMesh","bu","bv","faceId","subMeshFaceId","subMeshId","pickedSprite","thinInstanceIndex","ray","originMesh","aimTransform","gripTransform","getNormal","useWorldCoordinates","useVerticesNormals","_indices","isVerticesDataPresent","NormalKind","indices","getIndices","length","result","tmp0","tmp1","tmp2","normals","getVerticesData","normal0","FromArrayToRef","copyFromFloats","normal1","normal2","scale","x","y","z","positions","PositionKind","vertex1","vertex2","vertex3","p1p2","subtract","p3p2","Cross","transformNormalToWorld","n","wm","getWorldMatrix","nonUniformScaling","Matrix","copyFrom","setTranslationFromFloats","invert","transposeToRef","TransformNormalToRef","normalForDirectionChecking","Dot","direction","negateInPlace","normalize","getTextureCoordinates","uvSet","UVKind","uvs","uv0","FromArray","uv1","uv2"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Collisions/pickingInfo.js"],"sourcesContent":["import { Vector3, Vector2, TmpVectors } from \"../Maths/math.vector.js\";\nimport { VertexBuffer } from \"../Buffers/buffer.js\";\n/**\n * Information about the result of picking within a scene\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/interactions/picking_collisions\n */\nexport class PickingInfo {\n constructor() {\n /**\n * If the pick collided with an object\n */\n this.hit = false;\n /**\n * Distance away where the pick collided\n */\n this.distance = 0;\n /**\n * The location of pick collision\n */\n this.pickedPoint = null;\n /**\n * The mesh corresponding the pick collision\n */\n this.pickedMesh = null;\n /** (See getTextureCoordinates) The barycentric U coordinate that is used when calculating the texture coordinates of the collision.*/\n this.bu = 0;\n /** (See getTextureCoordinates) The barycentric V coordinate that is used when calculating the texture coordinates of the collision.*/\n this.bv = 0;\n /** The index of the face on the mesh that was picked, or the index of the Line if the picked Mesh is a LinesMesh */\n this.faceId = -1;\n /** The index of the face on the subMesh that was picked, or the index of the Line if the picked Mesh is a LinesMesh */\n this.subMeshFaceId = -1;\n /** Id of the submesh that was picked */\n this.subMeshId = 0;\n /** If a sprite was picked, this will be the sprite the pick collided with */\n this.pickedSprite = null;\n /** If we are picking a mesh with thin instance, this will give you the picked thin instance */\n this.thinInstanceIndex = -1;\n /**\n * The ray that was used to perform the picking.\n */\n this.ray = null;\n /**\n * If a mesh was used to do the picking (eg. 6dof controller) as a \"near interaction\", this will be populated.\n */\n this.originMesh = null;\n /**\n * The aim-space transform of the input used for picking, if it is an XR input source.\n */\n this.aimTransform = null;\n /**\n * The grip-space transform of the input used for picking, if it is an XR input source.\n * Some XR sources, such as input coming from head mounted displays, do not have this.\n */\n this.gripTransform = null;\n }\n /**\n * Gets the normal corresponding to the face the pick collided with\n * @param useWorldCoordinates If the resulting normal should be relative to the world (default: false)\n * @param useVerticesNormals If the vertices normals should be used to calculate the normal instead of the normal map (default: true)\n * @returns The normal corresponding to the face the pick collided with\n * @remarks Note that the returned normal will always point towards the picking ray.\n */\n getNormal(useWorldCoordinates = false, useVerticesNormals = true) {\n if (!this.pickedMesh || (useVerticesNormals && !this.pickedMesh.isVerticesDataPresent(VertexBuffer.NormalKind))) {\n return null;\n }\n let indices = this.pickedMesh.getIndices();\n if (indices?.length === 0) {\n indices = null;\n }\n let result;\n const tmp0 = TmpVectors.Vector3[0];\n const tmp1 = TmpVectors.Vector3[1];\n const tmp2 = TmpVectors.Vector3[2];\n if (useVerticesNormals) {\n const normals = this.pickedMesh.getVerticesData(VertexBuffer.NormalKind);\n let normal0 = indices\n ? Vector3.FromArrayToRef(normals, indices[this.faceId * 3] * 3, tmp0)\n : tmp0.copyFromFloats(normals[this.faceId * 3 * 3], normals[this.faceId * 3 * 3 + 1], normals[this.faceId * 3 * 3 + 2]);\n let normal1 = indices\n ? Vector3.FromArrayToRef(normals, indices[this.faceId * 3 + 1] * 3, tmp1)\n : tmp1.copyFromFloats(normals[(this.faceId * 3 + 1) * 3], normals[(this.faceId * 3 + 1) * 3 + 1], normals[(this.faceId * 3 + 1) * 3 + 2]);\n let normal2 = indices\n ? Vector3.FromArrayToRef(normals, indices[this.faceId * 3 + 2] * 3, tmp2)\n : tmp2.copyFromFloats(normals[(this.faceId * 3 + 2) * 3], normals[(this.faceId * 3 + 2) * 3 + 1], normals[(this.faceId * 3 + 2) * 3 + 2]);\n normal0 = normal0.scale(this.bu);\n normal1 = normal1.scale(this.bv);\n normal2 = normal2.scale(1.0 - this.bu - this.bv);\n result = new Vector3(normal0.x + normal1.x + normal2.x, normal0.y + normal1.y + normal2.y, normal0.z + normal1.z + normal2.z);\n }\n else {\n const positions = this.pickedMesh.getVerticesData(VertexBuffer.PositionKind);\n const vertex1 = indices\n ? Vector3.FromArrayToRef(positions, indices[this.faceId * 3] * 3, tmp0)\n : tmp0.copyFromFloats(positions[this.faceId * 3 * 3], positions[this.faceId * 3 * 3 + 1], positions[this.faceId * 3 * 3 + 2]);\n const vertex2 = indices\n ? Vector3.FromArrayToRef(positions, indices[this.faceId * 3 + 1] * 3, tmp1)\n : tmp1.copyFromFloats(positions[(this.faceId * 3 + 1) * 3], positions[(this.faceId * 3 + 1) * 3 + 1], positions[(this.faceId * 3 + 1) * 3 + 2]);\n const vertex3 = indices\n ? Vector3.FromArrayToRef(positions, indices[this.faceId * 3 + 2] * 3, tmp2)\n : tmp2.copyFromFloats(positions[(this.faceId * 3 + 2) * 3], positions[(this.faceId * 3 + 2) * 3 + 1], positions[(this.faceId * 3 + 2) * 3 + 2]);\n const p1p2 = vertex1.subtract(vertex2);\n const p3p2 = vertex3.subtract(vertex2);\n result = Vector3.Cross(p1p2, p3p2);\n }\n const transformNormalToWorld = (pickedMesh, n) => {\n let wm = pickedMesh.getWorldMatrix();\n if (pickedMesh.nonUniformScaling) {\n TmpVectors.Matrix[0].copyFrom(wm);\n wm = TmpVectors.Matrix[0];\n wm.setTranslationFromFloats(0, 0, 0);\n wm.invert();\n wm.transposeToRef(TmpVectors.Matrix[1]);\n wm = TmpVectors.Matrix[1];\n }\n Vector3.TransformNormalToRef(n, wm, n);\n };\n if (useWorldCoordinates) {\n transformNormalToWorld(this.pickedMesh, result);\n }\n if (this.ray) {\n const normalForDirectionChecking = TmpVectors.Vector3[0].copyFrom(result);\n if (!useWorldCoordinates) {\n // the normal has not been transformed to world space as part as the normal processing, so we must do it now\n transformNormalToWorld(this.pickedMesh, normalForDirectionChecking);\n }\n // Flip the normal if the picking ray is in the same direction.\n if (Vector3.Dot(normalForDirectionChecking, this.ray.direction) > 0) {\n result.negateInPlace();\n }\n }\n result.normalize();\n return result;\n }\n /**\n * Gets the texture coordinates of where the pick occurred\n * @param uvSet The UV set to use to calculate the texture coordinates (default: VertexBuffer.UVKind)\n * @returns The vector containing the coordinates of the texture\n */\n getTextureCoordinates(uvSet = VertexBuffer.UVKind) {\n if (!this.pickedMesh || !this.pickedMesh.isVerticesDataPresent(uvSet)) {\n return null;\n }\n const indices = this.pickedMesh.getIndices();\n if (!indices) {\n return null;\n }\n const uvs = this.pickedMesh.getVerticesData(uvSet);\n if (!uvs) {\n return null;\n }\n let uv0 = Vector2.FromArray(uvs, indices[this.faceId * 3] * 2);\n let uv1 = Vector2.FromArray(uvs, indices[this.faceId * 3 + 1] * 2);\n let uv2 = Vector2.FromArray(uvs, indices[this.faceId * 3 + 2] * 2);\n uv0 = uv0.scale(this.bu);\n uv1 = uv1.scale(this.bv);\n uv2 = uv2.scale(1.0 - this.bu - this.bv);\n return new Vector2(uv0.x + uv1.x + uv2.x, uv0.y + uv1.y + uv2.y);\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|