|
@@ -11,14 +11,15 @@ import { DragControls } from "three/examples/jsm/controls/DragControls.js";
|
|
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
|
|
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
|
|
import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader.js";
|
|
import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader.js";
|
|
import { MTLLoader } from "three/examples/jsm/loaders/MTLLoader.js";
|
|
import { MTLLoader } from "three/examples/jsm/loaders/MTLLoader.js";
|
|
-import { FBXLoader } from "three/examples/jsm/loaders/FBXLoader.js";
|
|
|
|
-import { DDSLoader } from "three/examples/jsm/loaders/DDSLoader.js";
|
|
|
|
|
|
+// import { FBXLoader } from "three/examples/jsm/loaders/FBXLoader.js";
|
|
|
|
+// import { DDSLoader } from "three/examples/jsm/loaders/DDSLoader.js";
|
|
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
|
|
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
|
|
import { ConvexGeometry } from "three/examples/jsm/geometries/ConvexGeometry.js";
|
|
import { ConvexGeometry } from "three/examples/jsm/geometries/ConvexGeometry.js";
|
|
import {
|
|
import {
|
|
showFullScreenLoading,
|
|
showFullScreenLoading,
|
|
tryHideFullScreenLoading,
|
|
tryHideFullScreenLoading,
|
|
} from "../../../axios/filter";
|
|
} from "../../../axios/filter";
|
|
|
|
+import { mapState } from "vuex";
|
|
|
|
|
|
export default {
|
|
export default {
|
|
name: "threeVehicleConfiguration", // 车辆配置详情中的threeJS
|
|
name: "threeVehicleConfiguration", // 车辆配置详情中的threeJS
|
|
@@ -46,13 +47,21 @@ export default {
|
|
raf: null,
|
|
raf: null,
|
|
canDrag: true, // 是否可移动
|
|
canDrag: true, // 是否可移动
|
|
dragControls: null,
|
|
dragControls: null,
|
|
- sensor: null, // 当前操作的传感器模型
|
|
|
|
|
|
+ sensor: null, // 当前操作的传感器配置
|
|
ogt: null,
|
|
ogt: null,
|
|
- scale: 1.5, // 物体加载换算倍数
|
|
|
|
- rate: 20, // 坐标换算倍数
|
|
|
|
|
|
+ // scale: 2, // 物体加载换算倍数
|
|
|
|
+ // rate: 20, // 坐标换算倍数
|
|
};
|
|
};
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+ computed: {
|
|
|
|
+ ...mapState(["scale"]),
|
|
|
|
+ // 坐标换算倍数
|
|
|
|
+ rate() {
|
|
|
|
+ return 40 / this.scale;
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+
|
|
props: {
|
|
props: {
|
|
xValue: {
|
|
xValue: {
|
|
type: Number,
|
|
type: Number,
|
|
@@ -178,6 +187,23 @@ export default {
|
|
gridHelper.material.transparent = true;
|
|
gridHelper.material.transparent = true;
|
|
this.scene.add(gridHelper);
|
|
this.scene.add(gridHelper);
|
|
|
|
|
|
|
|
+ // const geometry = new THREE.BoxGeometry(100, 100, 100);
|
|
|
|
+ // const material = new THREE.MeshBasicMaterial({
|
|
|
|
+ // color: 0xffffff,
|
|
|
|
+ // opacity: 0.3,
|
|
|
|
+ // transparent: true,
|
|
|
|
+ // });
|
|
|
|
+ // geometry.translate(100, 100, 100);
|
|
|
|
+ // const cube = new THREE.Mesh(geometry, material);
|
|
|
|
+ // this.scene.add(cube);
|
|
|
|
+
|
|
|
|
+ // let geometry = new THREE.BoxGeometry(10, 10, 10, 2, 2, 2);
|
|
|
|
+ // let material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
|
|
|
|
+ // let object = new THREE.Mesh(geometry, material);
|
|
|
|
+ // let edges = new THREE.VertexNormalsHelper(object, 2, 0x00ff00, 1);
|
|
|
|
+ // this.scene.add(object);
|
|
|
|
+ // this.scene.add(edges);
|
|
|
|
+
|
|
const genCubeUrls = function (prefix, postfix) {
|
|
const genCubeUrls = function (prefix, postfix) {
|
|
return [
|
|
return [
|
|
prefix + "px" + postfix,
|
|
prefix + "px" + postfix,
|
|
@@ -338,7 +364,7 @@ export default {
|
|
1,
|
|
1,
|
|
false
|
|
false
|
|
);
|
|
);
|
|
- cubeGeometry.translate(0, -150, 0);
|
|
|
|
|
|
+ cubeGeometry.translate(0, -75 * this.scale, 0);
|
|
|
|
|
|
let obj = {
|
|
let obj = {
|
|
color: 0x4c4c4c,
|
|
color: 0x4c4c4c,
|
|
@@ -438,7 +464,7 @@ export default {
|
|
},
|
|
},
|
|
initCar0(model) {
|
|
initCar0(model) {
|
|
if (this.car) {
|
|
if (this.car) {
|
|
- console.log(this.car);
|
|
|
|
|
|
+ // console.log(this.car);
|
|
this.scene.remove(this.car);
|
|
this.scene.remove(this.car);
|
|
this.removeObj(this.car);
|
|
this.removeObj(this.car);
|
|
this.car = null;
|
|
this.car = null;
|
|
@@ -507,103 +533,95 @@ export default {
|
|
);
|
|
);
|
|
},
|
|
},
|
|
initCar1() {
|
|
initCar1() {
|
|
- const loader2 = new DDSLoader();
|
|
|
|
-
|
|
|
|
- const map1 = loader2.load(
|
|
|
|
- `${this.publicPath}q5/AudiQ5_Texture.dds`
|
|
|
|
- );
|
|
|
|
- const map2 = loader2.load(`${this.publicPath}q5/env3.dds`);
|
|
|
|
- const map3 = loader2.load(
|
|
|
|
- `${this.publicPath}q5/Tx_Blur_AudiQ5.dds`
|
|
|
|
- );
|
|
|
|
- const map4 = loader2.load(`${this.publicPath}q5/Tx_Driver.dds`);
|
|
|
|
- const map6 = loader2.load(
|
|
|
|
- `${this.publicPath}q5/Tx_ln_AudiQ5_09.dds`
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- var that = this;
|
|
|
|
- var loader = new FBXLoader(); //创建一个FBX加载器
|
|
|
|
- // var loader = new GLTFLoader(); //创建一个FBX加载器
|
|
|
|
- // loader.load(`${this.publicPath}6/a8/audia8.fbx`, function (obj) {
|
|
|
|
- // loader.load(`${this.publicPath}6/q5/audiq5.fbx`, function (obj) {
|
|
|
|
- // loader.load(`${this.publicPath}6/a8/audia8.fbx`, function (obj) {
|
|
|
|
- // loader.load(`${this.publicPath}a8/audia8.fbx`, function (obj) {
|
|
|
|
- // loader.load(`${this.publicPath}q5/audiq5.fbx`, function (obj) {
|
|
|
|
- // loader.load(`${this.publicPath}lb/audiq5.fbx`, function (obj) {
|
|
|
|
- loader.load(
|
|
|
|
- `${this.publicPath}lb/1/fbx/untitled.fbx`,
|
|
|
|
- function (obj) {
|
|
|
|
- // loader.load(`${this.publicPath}q6/audiq5.fbx`, function (obj) {
|
|
|
|
- // loader.load(`${this.publicPath}untitled.fbx`, function (obj) {
|
|
|
|
- // loader.load(`${this.publicPath}untitled.glb`, function (obj) {
|
|
|
|
- // loader.load(`${this.publicPath}fbx/Samba Dancing.fbx`, function (obj) {
|
|
|
|
- // 可以在控制台打印obj对象,找到animations属性
|
|
|
|
- console.log(obj);
|
|
|
|
- obj.name = "car";
|
|
|
|
-
|
|
|
|
- // obj.map = map1;
|
|
|
|
- function _ChangeMaterialEmissive(parent) {
|
|
|
|
- parent.traverse(function (child) {
|
|
|
|
- // if (child instanceof THREE.Mesh) {
|
|
|
|
- if (child.isMesh) {
|
|
|
|
- // child.material.emissive = new THREE.Color(1, 1, 1);
|
|
|
|
- // child.material.emissive = child.material.color;
|
|
|
|
- // child.material.emissiveIntensity = 1;
|
|
|
|
- // child.material.emissiveMap = child.material.map;
|
|
|
|
- // child.material.envMap = child.material.map;
|
|
|
|
- // child.material.alphaMap = child.material.map;
|
|
|
|
- // child.material.aoMap = child.material.map;
|
|
|
|
- // child.material.bumpMap = child.material.map;
|
|
|
|
- // child.material.lightMap = child.material.map;
|
|
|
|
- // child.material.normalMap = child.material.map;
|
|
|
|
- // child.material.specularMap = child.material.map;
|
|
|
|
- // child.material.transparent = true;
|
|
|
|
- child.castShadow = true;
|
|
|
|
- child.receiveShadow = true;
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- _ChangeMaterialEmissive(obj);
|
|
|
|
-
|
|
|
|
- // obj.traverse(function (child) {
|
|
|
|
- // if (child.isMesh) {
|
|
|
|
- // // child.material.emissive = new THREE.Color(1, 1, 1);
|
|
|
|
- // child.material.emissive = child.material.color;
|
|
|
|
- // child.material.emissiveIntensity = 1;
|
|
|
|
- // child.material.emissiveMap = child.material.map;
|
|
|
|
- // child.castShadow = true;
|
|
|
|
- // child.receiveShadow = true;
|
|
|
|
- // }
|
|
|
|
- // });
|
|
|
|
-
|
|
|
|
- /* for (let i = 0; i < obj.children.length; i++) {
|
|
|
|
- // obj.children[i].position.set(0, -135, 0);
|
|
|
|
- // obj.children[i].position.set(18, 36, 0);
|
|
|
|
- // obj.children[i].scale.set(30, 30, 30);
|
|
|
|
- // obj.children[i].scale.set(0.45, 0.45, 0.45);
|
|
|
|
- obj.children[i].rotation.set(
|
|
|
|
- (-90 * Math.PI) / 180,
|
|
|
|
- 0,
|
|
|
|
- (-180 * Math.PI) / 180
|
|
|
|
- );
|
|
|
|
- // obj.children[i].transparent.set(0.5);
|
|
|
|
- // that.transformControls.attach(obj.children[i]);
|
|
|
|
- } */
|
|
|
|
-
|
|
|
|
- obj.rotation.set(
|
|
|
|
- (-90 * Math.PI) / 180,
|
|
|
|
- 0,
|
|
|
|
- (-180 * Math.PI) / 180
|
|
|
|
- );
|
|
|
|
- // obj.scale.set(30, 30, 30);
|
|
|
|
-
|
|
|
|
- // 查看动画数据 2个剪辑对象AnimationClip,一个有关键帧动画,一个没有
|
|
|
|
- // console.log(obj.animations);
|
|
|
|
- that.scene.add(obj);
|
|
|
|
- // that.scene.add(obj.scene);
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
|
|
+ // const loader2 = new DDSLoader();
|
|
|
|
+ // const map1 = loader2.load(
|
|
|
|
+ // `${this.publicPath}q5/AudiQ5_Texture.dds`
|
|
|
|
+ // );
|
|
|
|
+ // const map2 = loader2.load(`${this.publicPath}q5/env3.dds`);
|
|
|
|
+ // const map3 = loader2.load(
|
|
|
|
+ // `${this.publicPath}q5/Tx_Blur_AudiQ5.dds`
|
|
|
|
+ // );
|
|
|
|
+ // const map4 = loader2.load(`${this.publicPath}q5/Tx_Driver.dds`);
|
|
|
|
+ // const map6 = loader2.load(
|
|
|
|
+ // `${this.publicPath}q5/Tx_ln_AudiQ5_09.dds`
|
|
|
|
+ // );
|
|
|
|
+ // var that = this;
|
|
|
|
+ // var loader = new FBXLoader(); //创建一个FBX加载器
|
|
|
|
+ // // var loader = new GLTFLoader(); //创建一个FBX加载器
|
|
|
|
+ // // loader.load(`${this.publicPath}6/a8/audia8.fbx`, function (obj) {
|
|
|
|
+ // // loader.load(`${this.publicPath}6/q5/audiq5.fbx`, function (obj) {
|
|
|
|
+ // // loader.load(`${this.publicPath}6/a8/audia8.fbx`, function (obj) {
|
|
|
|
+ // // loader.load(`${this.publicPath}a8/audia8.fbx`, function (obj) {
|
|
|
|
+ // // loader.load(`${this.publicPath}q5/audiq5.fbx`, function (obj) {
|
|
|
|
+ // // loader.load(`${this.publicPath}lb/audiq5.fbx`, function (obj) {
|
|
|
|
+ // loader.load(
|
|
|
|
+ // `${this.publicPath}lb/1/fbx/untitled.fbx`,
|
|
|
|
+ // function (obj) {
|
|
|
|
+ // // loader.load(`${this.publicPath}q6/audiq5.fbx`, function (obj) {
|
|
|
|
+ // // loader.load(`${this.publicPath}untitled.fbx`, function (obj) {
|
|
|
|
+ // // loader.load(`${this.publicPath}untitled.glb`, function (obj) {
|
|
|
|
+ // // loader.load(`${this.publicPath}fbx/Samba Dancing.fbx`, function (obj) {
|
|
|
|
+ // // 可以在控制台打印obj对象,找到animations属性
|
|
|
|
+ // console.log(obj);
|
|
|
|
+ // obj.name = "car";
|
|
|
|
+ // // obj.map = map1;
|
|
|
|
+ // function _ChangeMaterialEmissive(parent) {
|
|
|
|
+ // parent.traverse(function (child) {
|
|
|
|
+ // // if (child instanceof THREE.Mesh) {
|
|
|
|
+ // if (child.isMesh) {
|
|
|
|
+ // // child.material.emissive = new THREE.Color(1, 1, 1);
|
|
|
|
+ // // child.material.emissive = child.material.color;
|
|
|
|
+ // // child.material.emissiveIntensity = 1;
|
|
|
|
+ // // child.material.emissiveMap = child.material.map;
|
|
|
|
+ // // child.material.envMap = child.material.map;
|
|
|
|
+ // // child.material.alphaMap = child.material.map;
|
|
|
|
+ // // child.material.aoMap = child.material.map;
|
|
|
|
+ // // child.material.bumpMap = child.material.map;
|
|
|
|
+ // // child.material.lightMap = child.material.map;
|
|
|
|
+ // // child.material.normalMap = child.material.map;
|
|
|
|
+ // // child.material.specularMap = child.material.map;
|
|
|
|
+ // // child.material.transparent = true;
|
|
|
|
+ // child.castShadow = true;
|
|
|
|
+ // child.receiveShadow = true;
|
|
|
|
+ // }
|
|
|
|
+ // });
|
|
|
|
+ // }
|
|
|
|
+ // _ChangeMaterialEmissive(obj);
|
|
|
|
+ // // obj.traverse(function (child) {
|
|
|
|
+ // // if (child.isMesh) {
|
|
|
|
+ // // // child.material.emissive = new THREE.Color(1, 1, 1);
|
|
|
|
+ // // child.material.emissive = child.material.color;
|
|
|
|
+ // // child.material.emissiveIntensity = 1;
|
|
|
|
+ // // child.material.emissiveMap = child.material.map;
|
|
|
|
+ // // child.castShadow = true;
|
|
|
|
+ // // child.receiveShadow = true;
|
|
|
|
+ // // }
|
|
|
|
+ // // });
|
|
|
|
+ // /* for (let i = 0; i < obj.children.length; i++) {
|
|
|
|
+ // // obj.children[i].position.set(0, -135, 0);
|
|
|
|
+ // // obj.children[i].position.set(18, 36, 0);
|
|
|
|
+ // // obj.children[i].scale.set(30, 30, 30);
|
|
|
|
+ // // obj.children[i].scale.set(0.45, 0.45, 0.45);
|
|
|
|
+ // obj.children[i].rotation.set(
|
|
|
|
+ // (-90 * Math.PI) / 180,
|
|
|
|
+ // 0,
|
|
|
|
+ // (-180 * Math.PI) / 180
|
|
|
|
+ // );
|
|
|
|
+ // // obj.children[i].transparent.set(0.5);
|
|
|
|
+ // // that.transformControls.attach(obj.children[i]);
|
|
|
|
+ // } */
|
|
|
|
+ // obj.rotation.set(
|
|
|
|
+ // (-90 * Math.PI) / 180,
|
|
|
|
+ // 0,
|
|
|
|
+ // (-180 * Math.PI) / 180
|
|
|
|
+ // );
|
|
|
|
+ // // obj.scale.set(30, 30, 30);
|
|
|
|
+ // // 查看动画数据 2个剪辑对象AnimationClip,一个有关键帧动画,一个没有
|
|
|
|
+ // // console.log(obj.animations);
|
|
|
|
+ // that.scene.add(obj);
|
|
|
|
+ // // that.scene.add(obj.scene);
|
|
|
|
+ // }
|
|
|
|
+ // );
|
|
},
|
|
},
|
|
initCar2() {
|
|
initCar2() {
|
|
var that = this;
|
|
var that = this;
|
|
@@ -732,7 +750,7 @@ export default {
|
|
// this.initCar1();
|
|
// this.initCar1();
|
|
// }
|
|
// }
|
|
|
|
|
|
- console.log(model);
|
|
|
|
|
|
+ // console.log(model);
|
|
if (!model) return;
|
|
if (!model) return;
|
|
if (!model.includes(".glb")) return;
|
|
if (!model.includes(".glb")) return;
|
|
|
|
|
|
@@ -845,9 +863,9 @@ export default {
|
|
this.yAngle = 0;
|
|
this.yAngle = 0;
|
|
this.zAngle = 0;
|
|
this.zAngle = 0;
|
|
|
|
|
|
- let x = +this.$parent.formA.sensorX || 0;
|
|
|
|
- let y = +this.$parent.formA.sensorY || 0;
|
|
|
|
- let z = +this.$parent.formA.sensorZ || 0;
|
|
|
|
|
|
+ let z = +this.$parent.formA.sensorX || 0;
|
|
|
|
+ let x = +this.$parent.formA.sensorY || 0;
|
|
|
|
+ let y = +this.$parent.formA.sensorZ || 0;
|
|
let h = +this.$parent.formA.sensorP || 0;
|
|
let h = +this.$parent.formA.sensorP || 0;
|
|
let p = +this.$parent.formA.sensorR || 0;
|
|
let p = +this.$parent.formA.sensorR || 0;
|
|
let r = +this.$parent.formA.sensorH || 0;
|
|
let r = +this.$parent.formA.sensorH || 0;
|
|
@@ -935,7 +953,7 @@ export default {
|
|
that.sensor = obj1;
|
|
that.sensor = obj1;
|
|
}
|
|
}
|
|
obj1.name = "ogt";
|
|
obj1.name = "ogt";
|
|
- console.log(that.scene);
|
|
|
|
|
|
+ // console.log(that.scene);
|
|
|
|
|
|
that.scene.add(obj1); //返回的组对象插入场景中
|
|
that.scene.add(obj1); //返回的组对象插入场景中
|
|
}, 600);
|
|
}, 600);
|
|
@@ -1034,7 +1052,7 @@ export default {
|
|
1,
|
|
1,
|
|
false
|
|
false
|
|
);
|
|
);
|
|
- cubeGeometry.translate(0, -150, 0);
|
|
|
|
|
|
+ cubeGeometry.translate(0, -75 * this.scale, 0);
|
|
|
|
|
|
let obj = {
|
|
let obj = {
|
|
transparent: true,
|
|
transparent: true,
|
|
@@ -1096,9 +1114,9 @@ export default {
|
|
this.initContentToShow(
|
|
this.initContentToShow(
|
|
null,
|
|
null,
|
|
{
|
|
{
|
|
- x: Math.floor(item.sensorX / this.rate || 0),
|
|
|
|
- y: Math.floor(item.sensorY / this.rate || 0),
|
|
|
|
- z: Math.floor(item.sensorZ / this.rate || 0),
|
|
|
|
|
|
+ z: Math.floor(item.sensorX / this.rate || 0),
|
|
|
|
+ x: Math.floor(item.sensorY / this.rate || 0),
|
|
|
|
+ y: Math.floor(item.sensorZ / this.rate || 0),
|
|
},
|
|
},
|
|
{
|
|
{
|
|
x: +item.sensorP,
|
|
x: +item.sensorP,
|
|
@@ -1110,9 +1128,9 @@ export default {
|
|
|
|
|
|
this.initSensor(
|
|
this.initSensor(
|
|
{
|
|
{
|
|
- x: Math.floor(item.sensorX / this.rate || 0),
|
|
|
|
- y: Math.floor(item.sensorY / this.rate || 0),
|
|
|
|
- z: Math.floor(item.sensorZ / this.rate || 0),
|
|
|
|
|
|
+ z: Math.floor(item.sensorX / this.rate || 0),
|
|
|
|
+ x: Math.floor(item.sensorY / this.rate || 0),
|
|
|
|
+ y: Math.floor(item.sensorZ / this.rate || 0),
|
|
},
|
|
},
|
|
type,
|
|
type,
|
|
false
|
|
false
|
|
@@ -1146,7 +1164,7 @@ export default {
|
|
this.transformControls.detach();
|
|
this.transformControls.detach();
|
|
}
|
|
}
|
|
|
|
|
|
- console.log(this.configList);
|
|
|
|
|
|
+ // console.log(this.configList);
|
|
|
|
|
|
this.showSensor(this.configList.camera, "camera");
|
|
this.showSensor(this.configList.camera, "camera");
|
|
this.showSensor(this.configList.ogt, "ogt");
|
|
this.showSensor(this.configList.ogt, "ogt");
|
|
@@ -1254,7 +1272,7 @@ export default {
|
|
[x2, y2, r2],
|
|
[x2, y2, r2],
|
|
[x3, -y2, r2],
|
|
[x3, -y2, r2],
|
|
];
|
|
];
|
|
- console.log(pointsArr3);
|
|
|
|
|
|
+ // console.log(pointsArr3);
|
|
|
|
|
|
let points = pointsArr3.map(
|
|
let points = pointsArr3.map(
|
|
(d) => new THREE.Vector3(d[0], d[1], d[2])
|
|
(d) => new THREE.Vector3(d[0], d[1], d[2])
|
|
@@ -1272,7 +1290,7 @@ export default {
|
|
//通过ConvexGeometry凸包绘制一个梯台,当然也可以使用ExtrudeGeometry挤压几何体,
|
|
//通过ConvexGeometry凸包绘制一个梯台,当然也可以使用ExtrudeGeometry挤压几何体,
|
|
let tixingMesh = new THREE.Mesh(tixing, material);
|
|
let tixingMesh = new THREE.Mesh(tixing, material);
|
|
this.scene.add(tixingMesh);
|
|
this.scene.add(tixingMesh);
|
|
- console.log(tixingMesh);
|
|
|
|
|
|
+ // console.log(tixingMesh);
|
|
|
|
|
|
/* let vertices = [];
|
|
/* let vertices = [];
|
|
|
|
|
|
@@ -1325,7 +1343,7 @@ export default {
|
|
// dds.addHandler(/\.rgb$/i, new RGBELoader());
|
|
// dds.addHandler(/\.rgb$/i, new RGBELoader());
|
|
// console.log(dds);
|
|
// console.log(dds);
|
|
|
|
|
|
- THREE.DefaultLoadingManager.addHandler(/\.dds$/i, new DDSLoader());
|
|
|
|
|
|
+ // THREE.DefaultLoadingManager.addHandler(/\.dds$/i, new DDSLoader());
|
|
// THREE.DefaultLoadingManager.addHandler(/\.rgb$/i, new RGBELoader());
|
|
// THREE.DefaultLoadingManager.addHandler(/\.rgb$/i, new RGBELoader());
|
|
// console.log(THREE.DefaultLoadingManager);
|
|
// console.log(THREE.DefaultLoadingManager);
|
|
|
|
|