Skip to content

Commit 0772afe

Browse files
author
Léna Voinchet
committed
Change dummies
1 parent 45633bb commit 0772afe

File tree

8 files changed

+72
-35
lines changed

8 files changed

+72
-35
lines changed

js/scene/SceneManager.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
AxesHelper,
44
GridHelper,
55
AmbientLight,
6+
DirectionalLight,
67
PlaneGeometry,
78
BufferGeometry,
89
LineBasicMaterial,
@@ -141,9 +142,13 @@ class SceneManager{
141142
this.initScene = function(floor, wallX, wallY)
142143
{
143144
// Lighting
144-
const ambient = new AmbientLight( 0xffffff, 1.8);
145+
const ambient = new AmbientLight( 0xffffff, 0.2);
145146
this.scene.add(ambient);
146147

148+
const directionalLight = new DirectionalLight(0xffffff, 3.5); // Assez intense pour être visible
149+
directionalLight.position.set(3, 10, 10); // Positionnée en hauteur, venant d'un côté
150+
this.scene.add(directionalLight);
151+
147152
// Floor
148153
//const floor = buildFloorMesh(this.size, wallX.position.x, wallY.position.z);
149154
this.scene.add(floor);
@@ -235,7 +240,7 @@ class SceneManager{
235240

236241
function buildFloorMesh(size, wallXDepth, wallYDepth)
237242
{
238-
const materialFloor = new MeshPhongMaterial( {side:DoubleSide, color: 0x555555});
243+
const materialFloor = new MeshPhongMaterial( {side:DoubleSide, color: 0x373737});
239244

240245
const geometryFloor = new PlaneGeometry( size + 0.02, size + 0.02 );
241246

@@ -248,7 +253,7 @@ class SceneManager{
248253

249254
function buildWallXMesh(size, wallXDepth, wallYDepth)
250255
{
251-
const materialWallX = new MeshPhongMaterial( {color: 0xCCCCCC});//{ color: 0x522B47, dithering: true } ); // violet
256+
const materialWallX = new MeshPhongMaterial( {color: 0xFFFFFF});
252257

253258
const geometryWallX = new PlaneGeometry( size + 0.02, size + 0.02 );
254259

@@ -261,7 +266,7 @@ class SceneManager{
261266

262267
function buildWallYMesh(size, wallYDepth, wallXDepth)
263268
{
264-
const materialWallY = new MeshPhongMaterial( {color: 0xAAAAAA});//{ color: 0x7B0828, dithering: true } ); // magenta
269+
const materialWallY = new MeshPhongMaterial( {color: 0x999999});
265270

266271
const geometryWallY = new PlaneGeometry( size + 0.02, size + 0.02 );
267272

js/scene/objects/SceneObjects.js

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class SceneObjects{
9090

9191
this.addDummy = function()
9292
{
93-
if(!Dummy.maleModel || !Dummy.femaleModel)
93+
if(!Dummy.maleModel || !Dummy.male2Model || !Dummy.femaleModel || !Dummy.female2Model || !Dummy.childModel)
9494
{
9595
console.log("Add Dummy button will work in an instant");
9696
return;
@@ -100,7 +100,7 @@ class SceneObjects{
100100
//Rotation towards wall
101101
if(sceneManager.trackingMode == "wall-tracking")
102102
{
103-
newDummy.model.rotateY(180);
103+
newDummy.model.rotateY(Math.PI);
104104
newDummy.mesh.position.set(0, 1, 1);
105105
newDummy.updateTransformation();
106106
}
@@ -512,7 +512,7 @@ class SceneObjects{
512512
}
513513
if(datas.objects.hasOwnProperty('dummies'))
514514
{
515-
if(!Dummy.maleModel || !Dummy.femaleModel)
515+
if(!Dummy.maleModel || Dummy.male2Model || !Dummy.femaleModel || !Dummy.female2Model || !Dummy.childModel)
516516
{
517517
return;
518518
}
@@ -655,13 +655,31 @@ class SceneObjects{
655655
sceneManager.drawProjection(n);
656656
});
657657
}
658+
659+
function changeDummyColor(model, color) {
660+
model.traverse(function (child) {
661+
if (child.isMesh && child.material) {
662+
child.material.color.set(color);
663+
}
664+
});
665+
}
658666

659667
async function loadScene(isBuilder) {
660668
// Wait until models are loaded
661-
await Promise.all([
662-
loadModel(isBuilder, 'male'),
663-
loadModel(isBuilder, 'female')
669+
const [maleModel, male2Model, femaleModel, female2Model, childModel] = await Promise.all([
670+
loadModel('male'),
671+
loadModel('male_2'),
672+
loadModel('female'),
673+
loadModel('female_2'),
674+
loadModel('child')
664675
]);
676+
677+
const newColor = 0x747474;
678+
changeDummyColor(maleModel, newColor);
679+
changeDummyColor(male2Model, newColor);
680+
changeDummyColor(femaleModel, newColor);
681+
changeDummyColor(female2Model, newColor);
682+
changeDummyColor(childModel, newColor);
665683

666684
await new Promise((resolve, reject) => {
667685
SceneObjects.loadFont(isBuilder, () => {

js/scene/objects/props/Dummy.js

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@ import {
55
Object3D
66
} from 'three';
77

8-
import { MTLLoader } from 'three-loaders/MTLLoader.js';
9-
import { OBJLoader } from 'three-loaders/OBJLoader.js';
10-
8+
import { GLTFLoader } from 'three-loaders/GLTFLoader.js';
119

1210
class Dummy {
1311
static DEFAULT_DUMMIES_HEIGHT = document.getElementById('dummy-height-reference') ? document.getElementById('dummy-height-reference').value : 2;
1412
static maleModel;
13+
static male2Model;
1514
static femaleModel;
15+
static female2Model;
16+
static childModel;
1617

1718
constructor(id)
1819
{
@@ -47,7 +48,19 @@ class Dummy {
4748

4849
buildModel()
4950
{
50-
const model = new Object3D().copy((Math.random() < 0.5) ? Dummy.maleModel : Dummy.femaleModel);
51+
const modelChoice = Math.random();
52+
let model;
53+
if (modelChoice < 0.2) {
54+
model = new Object3D().copy(Dummy.maleModel);
55+
} else if (modelChoice < 0.4) {
56+
model = new Object3D().copy(Dummy.male2Model);
57+
} else if (modelChoice < 0.6) {
58+
model = new Object3D().copy(Dummy.femaleModel);
59+
} else if (modelChoice < 0.8) {
60+
model = new Object3D().copy(Dummy.female2Model);
61+
} else {
62+
model = new Object3D().copy(Dummy.childModel);
63+
}
5164
const scaling = Dummy.DEFAULT_DUMMIES_HEIGHT / 220.0;
5265
model.scale.set(scaling, scaling, scaling);
5366
//model.position.set(dummy.xPos, dummy.zPos, dummy.yPos);
@@ -94,37 +107,38 @@ class Dummy {
94107

95108
}
96109

97-
async function loadModel(isBuilder, genre) {
98-
const path = isBuilder ? './designer/' : './';
110+
async function loadModel(genre) {
111+
const loader = new GLTFLoader();
99112

100-
const materials = await new Promise((resolve, reject) => {
101-
new MTLLoader()
102-
.setPath(path + 'models/' + genre + '02/')
103-
.setRequestHeader({ "Content-Type": "model/mtl" })
104-
.load(genre + '02.mtl', resolve, undefined, reject);
105-
});
113+
const path = `./models/${genre}.glb`;
106114

107-
materials.preload();
115+
const gltf = await loader.loadAsync(path);
108116

109-
const object = await new Promise((resolve, reject) => {
110-
new OBJLoader()
111-
.setMaterials(materials)
112-
.setPath(path + 'models/' + genre + '02/')
113-
.setRequestHeader({ "Content-Type": "model/obj" })
114-
.load(genre + '02.obj', resolve, undefined, reject);
115-
});
117+
const object = gltf.scene;
116118

117-
if (genre === 'male') Dummy.maleModel = object;
118-
else if (genre === 'female') Dummy.femaleModel = object;
119+
if (genre === 'male') {
120+
Dummy.maleModel = object;
121+
} else if (genre === 'male_2') {
122+
Dummy.male2Model = object;
123+
} else if (genre === 'female') {
124+
Dummy.femaleModel = object;
125+
} else if (genre === 'female_2') {
126+
Dummy.female2Model = object;
127+
} else if (genre === 'child') {
128+
Dummy.childModel = object;
129+
}
119130

120131
return object;
121132
}
122133

123134
(async () => {
124135

125-
const [maleModel, femaleModel] = await Promise.all([
126-
loadModel(false, 'male'),
127-
loadModel(false, 'female')
136+
const [maleModel, male2Model, femaleModel, female2Model, childModel] = await Promise.all([
137+
loadModel('male'),
138+
loadModel('male_2'),
139+
loadModel('female'),
140+
loadModel('female_2'),
141+
loadModel('child')
128142
]);
129143

130144
})();

models/child.glb

50.9 KB
Binary file not shown.

models/female.glb

51 KB
Binary file not shown.

models/female_2.glb

51.1 KB
Binary file not shown.

models/male.glb

51 KB
Binary file not shown.

models/male_2.glb

50.9 KB
Binary file not shown.

0 commit comments

Comments
 (0)