Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
W
webgl25
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RIFI Zaynab
webgl25
Commits
f89750a1
Commit
f89750a1
authored
1 month ago
by
MattheoCo
Browse files
Options
Downloads
Patches
Plain Diff
mise en place de la salle
parent
50535cd6
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
COGNET/main.js
+190
-12
190 additions, 12 deletions
COGNET/main.js
COGNET/textures/ft_stone01_n.png
+0
-0
0 additions, 0 deletions
COGNET/textures/ft_stone01_n.png
with
190 additions
and
12 deletions
COGNET/main.js
+
190
−
12
View file @
f89750a1
...
@@ -4,43 +4,222 @@ import { OBJLoader } from 'three/addons/loaders/OBJLoader.js';
...
@@ -4,43 +4,222 @@ import { OBJLoader } from 'three/addons/loaders/OBJLoader.js';
// Initialisation de la scène, de la caméra et du rendu
// Initialisation de la scène, de la caméra et du rendu
const
scene
=
new
THREE
.
Scene
();
const
scene
=
new
THREE
.
Scene
();
const
renderer
=
new
THREE
.
WebGLRenderer
();
const
renderer
=
new
THREE
.
WebGLRenderer
(
{
antialias
:
true
}
);
renderer
.
setSize
(
window
.
innerWidth
,
window
.
innerHeight
);
renderer
.
setSize
(
window
.
innerWidth
,
window
.
innerHeight
);
document
.
getElementById
(
'
webGL
'
).
appendChild
(
renderer
.
domElement
);
document
.
getElementById
(
'
webGL
'
).
appendChild
(
renderer
.
domElement
);
// Define shared materials
const
woodMaterial
=
new
THREE
.
MeshStandardMaterial
({
color
:
0x8B4513
});
const
wallMaterial
=
new
THREE
.
MeshStandardMaterial
({
color
:
0xE8E8E8
});
const
floorMaterial
=
new
THREE
.
MeshStandardMaterial
({
color
:
0x808080
});
const
ceilingMaterial
=
new
THREE
.
MeshStandardMaterial
({
color
:
0xF5F5F5
});
let
camera
;
let
camera
;
// Ajout des contrôles de la caméra
// Ajout des contrôles de la caméra
let
controls
;
let
controls
;
function
init
()
{
function
init
()
{
camera
=
new
THREE
.
PerspectiveCamera
(
45
,
window
.
innerWidth
/
window
.
innerHeight
,
0.1
,
2
0
);
camera
=
new
THREE
.
PerspectiveCamera
(
45
,
window
.
innerWidth
/
window
.
innerHeight
,
0.1
,
10
0
);
camera
.
position
.
z
=
1.5
;
// Rapprochez la
cam
é
ra
camera
.
position
.
set
(
0
,
2
,
5
);
// Position the
cam
e
ra
to see the room
// scene
// scene
const
ambientLight
=
new
THREE
.
AmbientLight
(
0xffffff
);
const
ambientLight
=
new
THREE
.
AmbientLight
(
0xffffff
,
0.5
);
scene
.
add
(
ambientLight
);
scene
.
add
(
ambientLight
);
const
pointLight
=
new
THREE
.
PointLight
(
0xffffff
,
1
);
const
pointLight
=
new
THREE
.
PointLight
(
0xffffff
,
1
);
camera
.
add
(
pointLight
);
pointLight
.
position
.
set
(
0
,
3
,
0
);
// Light from ceiling
scene
.
add
(
pointLight
);
scene
.
add
(
camera
);
scene
.
add
(
camera
);
// renderer
// renderer
renderer
.
setPixelRatio
(
window
.
devicePixelRatio
);
renderer
.
setPixelRatio
(
Math
.
min
(
window
.
devicePixelRatio
,
2
)
);
renderer
.
setSize
(
window
.
innerWidth
,
window
.
innerHeight
);
renderer
.
setSize
(
window
.
innerWidth
,
window
.
innerHeight
);
renderer
.
setAnimationLoop
(
animate
);
renderer
.
setAnimationLoop
(
animate
);
// controls
// controls
controls
=
new
OrbitControls
(
camera
,
renderer
.
domElement
);
controls
=
new
OrbitControls
(
camera
,
renderer
.
domElement
);
controls
.
minDistance
=
1
;
controls
.
minDistance
=
1
;
controls
.
maxDistance
=
3
;
controls
.
maxDistance
=
10
;
controls
.
enableDamping
=
true
;
controls
.
dampingFactor
=
0.05
;
// resize event
// resize event
window
.
addEventListener
(
'
resize
'
,
onWindowResize
);
window
.
addEventListener
(
'
resize
'
,
onWindowResize
);
// Create the room
createRoom
();
// Create the table
createTable
();
// Load the violin object with textures
// Load the violin object with textures
ObjectWithTextures
();
ObjectWithTextures
();
}
}
function
createRoom
()
{
// Load the stone texture
const
textureLoader
=
new
THREE
.
TextureLoader
();
const
stoneTexture
=
textureLoader
.
load
(
'
textures/ft_stone01_n.png
'
);
// Define shared materials - update floor to be white and ceiling to be light gray
const
woodMaterial
=
new
THREE
.
MeshStandardMaterial
({
color
:
0x8B4513
});
const
floorMaterial
=
new
THREE
.
MeshStandardMaterial
({
color
:
0xFFFFFF
});
// White floor
const
ceilingMaterial
=
new
THREE
.
MeshStandardMaterial
({
color
:
0xF5F5F5
});
// Apply texture to the wall material with lighter gray color
const
wallMaterial
=
new
THREE
.
MeshStandardMaterial
({
color
:
0xBBBBBB
,
// Lighter gray color (changed from 0x808080)
normalMap
:
stoneTexture
,
normalScale
:
new
THREE
.
Vector2
(
0.5
,
0.5
),
roughness
:
0.7
,
metalness
:
0.2
});
// Floor
const
floorGeometry
=
new
THREE
.
PlaneGeometry
(
10
,
10
);
const
floor
=
new
THREE
.
Mesh
(
floorGeometry
,
floorMaterial
);
floor
.
rotation
.
x
=
-
Math
.
PI
/
2
;
floor
.
position
.
y
=
-
1
;
scene
.
add
(
floor
);
// Ceiling
const
ceilingGeometry
=
new
THREE
.
PlaneGeometry
(
10
,
10
);
const
ceiling
=
new
THREE
.
Mesh
(
ceilingGeometry
,
ceilingMaterial
);
ceiling
.
rotation
.
x
=
Math
.
PI
/
2
;
ceiling
.
position
.
y
=
4
;
scene
.
add
(
ceiling
);
// Wall 1 (back)
const
wall1Geometry
=
new
THREE
.
PlaneGeometry
(
10
,
5
);
const
wall1
=
new
THREE
.
Mesh
(
wall1Geometry
,
wallMaterial
);
wall1
.
position
.
set
(
0
,
1.5
,
-
5
);
scene
.
add
(
wall1
);
// Wall 2 (right) - with window
// Instead of a full wall, create wall segments around the window
// Top segment of wall 2
const
wall2TopGeometry
=
new
THREE
.
PlaneGeometry
(
10
,
1
);
const
wall2Top
=
new
THREE
.
Mesh
(
wall2TopGeometry
,
wallMaterial
);
wall2Top
.
position
.
set
(
5
,
3.5
,
0
);
wall2Top
.
rotation
.
y
=
-
Math
.
PI
/
2
;
scene
.
add
(
wall2Top
);
// Bottom segment of wall 2
const
wall2BottomGeometry
=
new
THREE
.
PlaneGeometry
(
10
,
2
);
// Increased height from 1 to 2
const
wall2Bottom
=
new
THREE
.
Mesh
(
wall2BottomGeometry
,
wallMaterial
);
wall2Bottom
.
position
.
set
(
5
,
0
,
0
);
// Lowered position from y: 0.5 to y: 0
wall2Bottom
.
rotation
.
y
=
-
Math
.
PI
/
2
;
scene
.
add
(
wall2Bottom
);
// Left segment of wall 2
const
wall2LeftGeometry
=
new
THREE
.
PlaneGeometry
(
10
-
3
,
2
);
const
wall2Left
=
new
THREE
.
Mesh
(
wall2LeftGeometry
,
wallMaterial
);
wall2Left
.
position
.
set
(
5
,
2
,
-
3.5
-
1.5
);
wall2Left
.
rotation
.
y
=
-
Math
.
PI
/
2
;
scene
.
add
(
wall2Left
);
// Right segment of wall 2
const
wall2RightGeometry
=
new
THREE
.
PlaneGeometry
(
10
-
3
,
2
);
const
wall2Right
=
new
THREE
.
Mesh
(
wall2RightGeometry
,
wallMaterial
);
wall2Right
.
position
.
set
(
5
,
2
,
3.5
+
1.5
);
wall2Right
.
rotation
.
y
=
-
Math
.
PI
/
2
;
scene
.
add
(
wall2Right
);
// Window pane
const
windowGeometry
=
new
THREE
.
PlaneGeometry
(
3
,
2
);
const
windowMaterial
=
new
THREE
.
MeshStandardMaterial
({
color
:
0x87CEEB
,
transparent
:
true
,
opacity
:
0.7
});
const
windowMesh
=
new
THREE
.
Mesh
(
windowGeometry
,
windowMaterial
);
windowMesh
.
position
.
set
(
5.05
,
2
,
0
);
windowMesh
.
rotation
.
y
=
-
Math
.
PI
/
2
;
scene
.
add
(
windowMesh
);
// Window frame - Fix orientation issue
const
frameTop
=
new
THREE
.
Mesh
(
new
THREE
.
BoxGeometry
(
0.1
,
0.1
,
3.2
),
// Fixed orientation (width, height, depth)
woodMaterial
);
frameTop
.
position
.
set
(
5.05
,
3.05
,
0
);
scene
.
add
(
frameTop
);
const
frameBottom
=
new
THREE
.
Mesh
(
new
THREE
.
BoxGeometry
(
0.1
,
0.1
,
3.2
),
// Fixed orientation (width, height, depth)
woodMaterial
);
frameBottom
.
position
.
set
(
5.05
,
0.95
,
0
);
scene
.
add
(
frameBottom
);
const
frameLeft
=
new
THREE
.
Mesh
(
new
THREE
.
BoxGeometry
(
0.1
,
2.2
,
0.1
),
woodMaterial
);
frameLeft
.
position
.
set
(
5.05
,
2
,
-
1.55
);
scene
.
add
(
frameLeft
);
const
frameRight
=
new
THREE
.
Mesh
(
new
THREE
.
BoxGeometry
(
0.1
,
2.2
,
0.1
),
woodMaterial
);
frameRight
.
position
.
set
(
5.05
,
2
,
1.55
);
scene
.
add
(
frameRight
);
// Wall 3 (front) - with door
const
wall3Geometry
=
new
THREE
.
PlaneGeometry
(
10
,
5
);
const
wall3
=
new
THREE
.
Mesh
(
wall3Geometry
,
wallMaterial
);
wall3
.
position
.
set
(
0
,
1.5
,
5
);
wall3
.
rotation
.
y
=
Math
.
PI
;
scene
.
add
(
wall3
);
// Door hole (cut in wall3)
const
doorGeometry
=
new
THREE
.
BoxGeometry
(
2
,
3
,
0.3
);
const
door
=
new
THREE
.
Mesh
(
doorGeometry
,
woodMaterial
);
door
.
position
.
set
(
2
,
0.5
,
4.9
);
scene
.
add
(
door
);
// Wall 4 (left)
const
wall4Geometry
=
new
THREE
.
PlaneGeometry
(
10
,
5
);
const
wall4
=
new
THREE
.
Mesh
(
wall4Geometry
,
wallMaterial
);
wall4
.
position
.
set
(
-
5
,
1.5
,
0
);
wall4
.
rotation
.
y
=
Math
.
PI
/
2
;
scene
.
add
(
wall4
);
}
function
createTable
()
{
// Table top
const
tableTopGeometry
=
new
THREE
.
BoxGeometry
(
3
,
0.1
,
2
);
const
tableTop
=
new
THREE
.
Mesh
(
tableTopGeometry
,
woodMaterial
);
tableTop
.
position
.
set
(
0
,
0
,
0
);
scene
.
add
(
tableTop
);
// Table legs geometry (shared)
const
legGeometry
=
new
THREE
.
BoxGeometry
(
0.1
,
1
,
0.1
);
// Leg 1 (front left)
const
leg1
=
new
THREE
.
Mesh
(
legGeometry
,
woodMaterial
);
leg1
.
position
.
set
(
-
1.4
,
-
0.5
,
0.9
);
scene
.
add
(
leg1
);
// Leg 2 (front right)
const
leg2
=
new
THREE
.
Mesh
(
legGeometry
,
woodMaterial
);
leg2
.
position
.
set
(
1.4
,
-
0.5
,
0.9
);
scene
.
add
(
leg2
);
// Leg 3 (back left)
const
leg3
=
new
THREE
.
Mesh
(
legGeometry
,
woodMaterial
);
leg3
.
position
.
set
(
-
1.4
,
-
0.5
,
-
0.9
);
scene
.
add
(
leg3
);
// Leg 4 (back right)
const
leg4
=
new
THREE
.
Mesh
(
legGeometry
,
woodMaterial
);
leg4
.
position
.
set
(
1.4
,
-
0.5
,
-
0.9
);
scene
.
add
(
leg4
);
}
// Fonction pour charger l'objet avec des textures
// Fonction pour charger l'objet avec des textures
function
ObjectWithTextures
()
{
function
ObjectWithTextures
()
{
const
textureLoader
=
new
THREE
.
TextureLoader
();
const
textureLoader
=
new
THREE
.
TextureLoader
();
...
@@ -58,15 +237,15 @@ function ObjectWithTextures() {
...
@@ -58,15 +237,15 @@ function ObjectWithTextures() {
child
.
material
.
needsUpdate
=
true
;
child
.
material
.
needsUpdate
=
true
;
}
}
});
});
object
.
position
.
set
(
0
,
0
,
-
1
);
// Position the object in front of the camera
object
.
position
.
set
(
0
,
0.15
,
0
);
// Raised position slightly to avoid clipping with table
object
.
scale
.
setScalar
(
0.05
);
// Augmentez l'échelle de l'objet
object
.
rotation
.
x
=
Math
.
PI
/
2
;
// Lay the violin flat on the table
object
.
scale
.
setScalar
(
0.1
);
// Doubled the scale from 0.05 to 0.1
scene
.
add
(
object
);
scene
.
add
(
object
);
});
});
}
}
// Fonction d'animation
// Fonction d'animation
function
animate
()
{
function
animate
()
{
requestAnimationFrame
(
animate
);
controls
.
update
();
controls
.
update
();
renderer
.
render
(
scene
,
camera
);
renderer
.
render
(
scene
,
camera
);
}
}
...
@@ -77,5 +256,4 @@ function onWindowResize() {
...
@@ -77,5 +256,4 @@ function onWindowResize() {
renderer
.
setSize
(
window
.
innerWidth
,
window
.
innerHeight
);
renderer
.
setSize
(
window
.
innerWidth
,
window
.
innerHeight
);
}
}
init
();
init
();
animate
();
\ No newline at end of file
\ No newline at end of file
This diff is collapsed.
Click to expand it.
COGNET/textures/ft_stone01_n.png
0 → 100644
+
0
−
0
View file @
f89750a1
125 KiB
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment