修改道岔模型,编辑器显示停车点

This commit is contained in:
sunzhenyu 2019-11-08 09:16:14 +08:00
parent 0a77b1e4f6
commit 523a2ac803
8 changed files with 272 additions and 50 deletions

View File

@ -141,13 +141,16 @@ export function Jlmap3ddata(mapid,scope){
let switchdata = JSON.parse(netdata.switchs);
let signaldata = JSON.parse(netdata.signals);
let standsdata = JSON.parse(netdata.stands);
// console.log(mapdata);
console.log(mapdata);
assetloader.setmodellist(netdata.assets,5);
assetloader.assetpromise(scene)
.then(function(data){
//console.log(data);
return jlmap3ddata.linklist.loadpromise(loaderdata.link,scene,assetloader);
})
.then(function(data){
return jlmap3ddata.sectionlist.sectionpromise(loaderdata.link,mapdata.linkList,mapdata.sectionList,switchdata,scene);
})
.then(function(data){
//console.log(data);
return jlmap3ddata.sectionlist.loadpromise(jlmap3ddata,assetloader,loaderdata.section,switchdata,scene);

View File

@ -23,6 +23,7 @@ export function SectionList() {
this.standtrack = [];
this.initpromise = function(jlmap3ddata,assetloader,sectiondata,switchdata,scene){
console.log(sectiondata);
return new Promise(function(resolve, reject){
scene.add(scope.sectiongroup);
scene.add(scope.switchgroup);
@ -44,11 +45,11 @@ export function SectionList() {
newsection.linkCode = sectiondata[i].linkCode;
scope.sections.datalist.push(newsection);
// scope.sections.modellist.push("");
// sections.modellist.push("");
}
}
buildsuidao(linkdata,scope.sections,assetloader,scene);
// console.log(scope.sections.datalist);
buildsuidao(linkdata,sections,assetloader,scene);
// console.log(sections.datalist);
//定义区分道岔组
let switchlist = [];
//遍历道岔数据
@ -193,6 +194,224 @@ export function SectionList() {
resolve("loadersection");
});
}
this.sectionpromise = function(linkdata,linklist,sectiondata,switchdata,scene){
// console.log(linkdata);
// console.log(linklist);
// console.log(sectiondata);
return new Promise(function(resolve, reject){
let linkrail = [];
let switchrail = [];
for(let i=0;i<linkdata.length;i++){
linkrail[linkdata[i].code] = {
lp:linkdata[i].rail[0],
rp:linkdata[i].rail[1],
lconnect:null,
rconnect:null,
lengthfact:linkdata[i].lengthfact,
lineleft:null,
lineright:null,
points:[],
type:null
};
}
for(let i=0;i<switchdata.length;i++){
switchrail[switchdata[i].code] = {
alink:switchdata[i].alink,
blink:switchdata[i].blink,
clink:switchdata[i].clink,
position:switchdata[i].position,
directtype:null,
locateType:0
};
if(linkrail[switchdata[i].blink].lp.x < switchdata[i].position.x){
linkrail[switchdata[i].alink].lswitch = switchdata[i].code;
linkrail[switchdata[i].blink].rswitch = switchdata[i].code;
}else{
linkrail[switchdata[i].alink].rswitch = switchdata[i].code;
linkrail[switchdata[i].blink].lswitch = switchdata[i].code;
}
//
if(linkrail[switchdata[i].clink].lp.x < switchdata[i].position.x){
linkrail[switchdata[i].alink].lswitch = switchdata[i].code;
linkrail[switchdata[i].clink].rswitch = switchdata[i].code;
}else{
linkrail[switchdata[i].alink].rswitch = switchdata[i].code;
linkrail[switchdata[i].clink].lswitch = switchdata[i].code;
}
}
for(let i=0;i<linkdata.length;i++){
if(linkdata[i].rotation._z == 0){
linkrail[linkdata[i].code].type = 0;
if(linkrail[linkdata[i].code].lswitch){
let switchpoint = switchrail[linkrail[linkdata[i].code].lswitch].position;
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x,0,switchpoint.z));
}
linkrail[linkdata[i].code].points.push(new THREE.Vector3(linkrail[linkdata[i].code].lp.x,0,linkrail[linkdata[i].code].lp.z));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(linkrail[linkdata[i].code].rp.x,0,linkrail[linkdata[i].code].rp.z));
if(linkrail[linkdata[i].code].rswitch){
let switchpoint = switchrail[linkrail[linkdata[i].code].rswitch].position;
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x,0,switchpoint.z));
}
}else{
if(linkdata[i].rotation._z>0){
let testline = new THREE.CatmullRomCurve3([
new THREE.Vector3(linkrail[linkdata[i].code].lp.x,0,linkrail[linkdata[i].code].lp.z),
new THREE.Vector3(linkrail[linkdata[i].code].rp.x,0,linkrail[linkdata[i].code].rp.z)
]);
linkrail[linkdata[i].code].type = 1;
if(linkrail[linkdata[i].code].lswitch){
let switchpoint = switchrail[linkrail[linkdata[i].code].lswitch].position;
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x,0,switchpoint.z));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x+1.5,0,switchpoint.z));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x+2,0,switchpoint.z));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x+4.5,0,switchpoint.z-0.05));
}
linkrail[linkdata[i].code].points.push(testline.getPointAt(0.12));
linkrail[linkdata[i].code].points.push(testline.getPointAt(0.22));
linkrail[linkdata[i].code].points.push(testline.getPointAt(0.82));
linkrail[linkdata[i].code].points.push(testline.getPointAt(0.92));
if(linkrail[linkdata[i].code].rswitch){
let switchpoint = switchrail[linkrail[linkdata[i].code].rswitch].position;
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x-4.5,0,switchpoint.z+0.05));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x-2,0,switchpoint.z));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x-1.5,0,switchpoint.z));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x,0,switchpoint.z));
}
}else{
let testline = new THREE.CatmullRomCurve3([
new THREE.Vector3(linkrail[linkdata[i].code].lp.x,0,linkrail[linkdata[i].code].lp.z),
new THREE.Vector3(linkrail[linkdata[i].code].rp.x,0,linkrail[linkdata[i].code].rp.z)
]);
linkrail[linkdata[i].code].type = 2;
if(linkrail[linkdata[i].code].lswitch){
let switchpoint = switchrail[linkrail[linkdata[i].code].lswitch].position;
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x,0,switchpoint.z));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x+1.5,0,switchpoint.z));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x+2,0,switchpoint.z));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x+4.5,0,switchpoint.z+0.05));
}
linkrail[linkdata[i].code].points.push(testline.getPointAt(0.12));
linkrail[linkdata[i].code].points.push(testline.getPointAt(0.22));
linkrail[linkdata[i].code].points.push(testline.getPointAt(0.82));
linkrail[linkdata[i].code].points.push(testline.getPointAt(0.92));
if(linkrail[linkdata[i].code].rswitch){
let switchpoint = switchrail[linkrail[linkdata[i].code].rswitch].position;
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x-4.5,0,switchpoint.z-0.05));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x-2,0,switchpoint.z));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x-1.5,0,switchpoint.z));
linkrail[linkdata[i].code].points.push(new THREE.Vector3(switchpoint.x,0,switchpoint.z));
}
}
}
}
for(let i=0;i<linkdata.length;i++){
linkrail[linkdata[i].code].lineleft = new THREE.CatmullRomCurve3(linkrail[linkdata[i].code].points);
linkrail[linkdata[i].code].lineleft.curveType = "centripetal";
// linkrail[linkdata[i].code].lineleft.tension = 0.2;
let rightpoints = [];
linkrail[linkdata[i].code].points.forEach(item=>{
rightpoints.push(item);
}
);
rightpoints.reverse();
linkrail[linkdata[i].code].lineright = new THREE.CatmullRomCurve3(rightpoints);
linkrail[linkdata[i].code].lineright.curveType = "centripetal";
// scope.linkrail[linkdata[i].code].lineright.tension = 0.11;
var points = linkrail[linkdata[i].code].lineleft.getPoints( 50 );
var geometry = new THREE.BufferGeometry().setFromPoints( points );
var material;
if(linkrail[linkdata[i].code].type == 0){
material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
}
if(linkrail[linkdata[i].code].type == 1){
material = new THREE.LineBasicMaterial( { color : 0x00ff00 } );
}
if(linkrail[linkdata[i].code].type == 2){
material = new THREE.LineBasicMaterial( { color : 0x0000ff } );
}
// Create the final object to add to the scene
var curveObject = new THREE.Line( geometry, material );
curveObject.position.y = Math.random();
scene.add(curveObject);
}
let standsections = [];
for(let i=0,len=sectiondata.length;i<len;i++){
if(sectiondata[i].isStandTrack == true){
standsections.push(sectiondata[i]);
}
}
console.log(standsections);
console.log(linklist);
for(let i=0,leni=standsections.length;i<leni;i++){
for(let j=0,lenj=linklist.length;j<lenj;j++){
if(standsections[i].linkCode == linklist[j].code){
console.log(standsections[i].linkCode);
// console.log(standsections[i]);
// console.log(linklist[j]);
// console.log("====================================");
let progress1 = standsections[i].leftStopPointOffset/linklist[j].lengthFact;
let progress2 = standsections[i].rightStopPointOffset/linklist[j].lengthFact;
let point1 = linkrail[linklist[j].code].lineleft.getPointAt(progress1);
var geometry = new THREE.CircleGeometry( 3, 16 );
var material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
let circle1 = new THREE.Mesh( geometry, material );
circle1.position.x = point1.x;
circle1.position.y = point1.y;
circle1.position.z = point1.z;
circle1.rotation.x = -Math.PI/2;
scene.add( circle1 );
let point2 = linkrail[linklist[j].code].lineleft.getPointAt(progress2);
let circle2 = new THREE.Mesh( geometry, material );
circle2.position.x = point2.x;
circle2.position.y = point2.y;
circle2.position.z = point2.z;
circle2.rotation.x = -Math.PI/2;
scene.add( circle2 );
console.log(standsections[i].leftStopPointOffset);
console.log(standsections[i].rightStopPointOffset);
console.log(linkrail[linklist[j].code].lineleft.points);
console.log(linklist[j].lengthFact);
console.log(point1);
console.log(point2);
console.log("====================================");
j = lenj;
}
}
}
resolve("loadersection");
});
}
//
// this.init = function(sectiondata,switchdata,scene){
@ -209,8 +428,8 @@ export function SectionList() {
// newsection.isStandTrack = sectiondata[i].isStandTrack;
// newsection.type = sectiondata[i].type;
//
// scope.sections.datalist.push(newsection);
// // scope.sections.modellist.push("");
// sections.datalist.push(newsection);
// // sections.modellist.push("");
// }
//
// }
@ -263,8 +482,8 @@ export function SectionList() {
//
// newswitch.index = i;
//
// scope.switchs.datalist.push(newswitch);
// scope.switchs.modellist.push("");
// switchs.datalist.push(newswitch);
// switchs.modellist.push("");
// }
// }
@ -291,7 +510,7 @@ export function SectionList() {
newsection.linkCode = sectiondata[i].linkCode;
scope.sections.datalist.push(newsection);
// scope.sections.modellist.push("");
// sections.modellist.push("");
}
}

View File

@ -96,7 +96,7 @@ let autoswitch1 = {
deviceType:"autoswitch1",
type:"fuzhou",
picUrl:"",
assetUrl:modelurl+"/models/auto/switch1.FBX"
assetUrl:"../../static/model/auto/switch1.FBX"
}
let autoswitch2 = {
@ -105,7 +105,7 @@ let autoswitch2 = {
deviceType:"autoswitch2",
type:"fuzhou",
picUrl:"",
assetUrl:modelurl+"/models/auto/switch2.FBX"
assetUrl:"../../static/model/auto/switch2.FBX"
}
export function AssetLoader(){

View File

@ -10,7 +10,7 @@ export function RailList(){
};
this.init = function(linkdata,switchdata,scene,storemod){
console.log(linkdata);
for(let i=0;i<linkdata.length;i++){
scope.linkrail[linkdata[i].code] = {
lp:linkdata[i].rail[0],
@ -194,39 +194,39 @@ export function RailList(){
rightpoints.reverse();
scope.linkrail[linkdata[i].code].lineright = new THREE.CatmullRomCurve3(rightpoints);
scope.linkrail[linkdata[i].code].lineright.curveType = "centripetal";
//
// for(let n=0,nm=scope.linkrail[linkdata[i].code].lineleft.points.length;n<nm;n++){
// var geometry = new THREE.CircleGeometry( 0.05, 16 );
// var material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
// var circle = new THREE.Mesh( geometry, material );
// console.log(n);
// console.log(scope.linkrail[linkdata[i].code].lineleft.points[n]);
// circle.position.x = scope.linkrail[linkdata[i].code].lineleft.points[n].x;
// circle.position.y = scope.linkrail[linkdata[i].code].lineleft.points[n].y;
// circle.position.z = scope.linkrail[linkdata[i].code].lineleft.points[n].z;
// circle.rotation.x = -Math.PI/2;
// scene.add( circle );
// }
// // scope.linkrail[linkdata[i].code].lineright.tension = 0.11;
// var points = scope.linkrail[linkdata[i].code].lineleft.getPoints( 50 );
// var geometry = new THREE.BufferGeometry().setFromPoints( points );
// var material;
// if(scope.linkrail[linkdata[i].code].type == 0){
// material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
// }
// if(scope.linkrail[linkdata[i].code].type == 1){
// material = new THREE.LineBasicMaterial( { color : 0x00ff00 } );
// }
// if(scope.linkrail[linkdata[i].code].type == 2){
// material = new THREE.LineBasicMaterial( { color : 0x0000ff } );
// }
//
//
// // Create the final object to add to the scene
// var curveObject = new THREE.Line( geometry, material );
//
// curveObject.position.y = Math.random();
// scene.add(curveObject);
for(let n=0,nm=scope.linkrail[linkdata[i].code].lineleft.points.length;n<nm;n++){
var geometry = new THREE.CircleGeometry( 0.05, 16 );
var material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
var circle = new THREE.Mesh( geometry, material );
console.log(n);
console.log(scope.linkrail[linkdata[i].code].lineleft.points[n]);
circle.position.x = scope.linkrail[linkdata[i].code].lineleft.points[n].x;
circle.position.y = scope.linkrail[linkdata[i].code].lineleft.points[n].y;
circle.position.z = scope.linkrail[linkdata[i].code].lineleft.points[n].z;
circle.rotation.x = -Math.PI/2;
scene.add( circle );
}
// scope.linkrail[linkdata[i].code].lineright.tension = 0.11;
var points = scope.linkrail[linkdata[i].code].lineleft.getPoints( 50 );
var geometry = new THREE.BufferGeometry().setFromPoints( points );
var material;
if(scope.linkrail[linkdata[i].code].type == 0){
material = new THREE.LineBasicMaterial( { color : 0xff0000 } );
}
if(scope.linkrail[linkdata[i].code].type == 1){
material = new THREE.LineBasicMaterial( { color : 0x00ff00 } );
}
if(scope.linkrail[linkdata[i].code].type == 2){
material = new THREE.LineBasicMaterial( { color : 0x0000ff } );
}
// Create the final object to add to the scene
var curveObject = new THREE.Line( geometry, material );
curveObject.position.y = Math.random();
scene.add(curveObject);
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.