A family cottage in a natural campground

 

The Pignes chalets at Le Pré Morjal campsite are wooden lodgings with an original design, designed to offer an excellent level of comfort while retaining the spirit of camping. With their warm atmosphere, the Pignes are an ideal solution for those looking for a chalet rental on a campsite that is different from traditional accommodation.

Located in Ispagnac, in the heart of Lozère, these chalets enjoy a privileged natural environment, close to the Gorges du Tarn and the Cévennes National Park. Les Pignes allows you to fully enjoy a vacation surrounded by nature, in a calm and green setting.

Your stay at the Pigne chalet

/* --- TIMELINE (5s total au lieu de 4s) --- 0–20% : dessin du cercle 20–35% : apparition des rayons 35–80% : rotation (plus lente) 80–100% : disparition douce (reset) */ /* CERCLE */ #sun-circle { stroke-dasharray: 100; animation: circleDraw 5s ease-in-out infinite; } @keyframes circleDraw { 0% { stroke-dashoffset: 100; opacity: 1; } 20% { stroke-dashoffset: 0; opacity: 1; } 80% { stroke-dashoffset: 0; opacity: 1; } 100% { stroke-dashoffset: 100; opacity: 0; } } /* RAYONS */ .ray { transform-origin: 20px 20px; animation: raysAnim 5s ease-in-out infinite; } @keyframes raysAnim { 0% { opacity: 0; transform: scale(0.9); } 20% { opacity: 0; transform: scale(0.9); } 35% { opacity: 1; transform: scale(1); } 80% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(0.9); } } /* ROTATION LENTE & FLUIDE */ #sun { transform-origin: 20px 20px; animation: spin 5s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 35% { transform: rotate(0deg); } 80% { transform: rotate(150deg); } /* rotation plus lente */ 100% { transform: rotate(360deg); } /* reset à la fin */ }

People per cottage

separate bedrooms

square foot of terrace

View of the exterior of the Pigne family chalet at the campsite near the Cévennes National Park
Chalet Pigne at Le Pré Morjal campsite in Lozère
Interior view of the Pigne chalet for 6 people in Ispagnac

Pignes

A chalet for a group of up to 6 people in Lozère

Designed to accommodate up to 4 people, the Pignes chalets are ideal for vacations with friends or for sporting trips in the great outdoors. They have two separate bedrooms, offering everyone a comfortable place to sleep, as well as a large central living area perfect for socializing.

Their interior layout combines privacy and sharing, making Les Pignes the ideal chalet for a stay in Lozère, whether for a week’s summer vacation or an off-season getaway.

Chalet Pigne with terrace and green space in the Lozère countryside
Rental of the Pigne chalet in a 3-star campground in Ispagnac
Terrace and green space in your chalet for holidays in Lozère
Les Pignes chalet for groups of friends at the campsite in Ispagnac
Chalet Pigne with terrace and green space in the Lozère countryside
Les Pignes chalet for groups of friends at the campsite in Ispagnac
Rental of the Pigne chalet in a 3-star campground in Ispagnac
Terrace and green space in your chalet for holidays in Lozère

An all-inclusive rental in Ispagnac

A cottage on a campsite: Our Pignes

The Pignes chalets at Le Pré Morjal campsite have been designed to accommodate families and groups looking for comfort, space, and tranquility. Thanks to their good insulation and air conditioning, the Pignes chalets guarantee pleasant comfort throughout the season, even during the hot summer months. They are the ideal place to relax after a busy day, in a calm and friendly atmosphere.

Staying in a Pigne chalet also allows you to take full advantage of the campground‘s facilities and services, which complete the experience:

 

  • Heated outdoor pool, very popular in summer
  • Recreational areas accessible to children and adults: playground, bocce ball, ping-pong
  • Indoor games room for extended relaxation: foosball, pool, air hockey
  • Campsite restaurant–pizzeria, and delivery of fresh bread and pastries
  • Free Wi-Fi
  • Evening entertainment and themed dinner

Book your Pigne chalet

/* --- TIMELINE (5s total au lieu de 4s) --- 0–20% : dessin du cercle 20–35% : apparition des rayons 35–80% : rotation (plus lente) 80–100% : disparition douce (reset) */ /* CERCLE */ #sun-circle { stroke-dasharray: 100; animation: circleDraw 5s ease-in-out infinite; } @keyframes circleDraw { 0% { stroke-dashoffset: 100; opacity: 1; } 20% { stroke-dashoffset: 0; opacity: 1; } 80% { stroke-dashoffset: 0; opacity: 1; } 100% { stroke-dashoffset: 100; opacity: 0; } } /* RAYONS */ .ray { transform-origin: 20px 20px; animation: raysAnim 5s ease-in-out infinite; } @keyframes raysAnim { 0% { opacity: 0; transform: scale(0.9); } 20% { opacity: 0; transform: scale(0.9); } 35% { opacity: 1; transform: scale(1); } 80% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(0.9); } } /* ROTATION LENTE & FLUIDE */ #sun { transform-origin: 20px 20px; animation: spin 5s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 35% { transform: rotate(0deg); } 80% { transform: rotate(150deg); } /* rotation plus lente */ 100% { transform: rotate(360deg); } /* reset à la fin */ }
/* Responsive: largeur 100% + hauteur auto via ratio */ #tent-container{ width: 100%; aspect-ratio: 10 / 7; /* 1000x700 -> conserve le ratio */ max-height: 700px; /* optionnel: limite sur grand écran */ margin: 0 auto; position: relative; overflow: hidden; } #tent-container canvas{ display:block; width:100% !important; height:100% !important; } /* optionnel: sur mobile tu peux limiter la hauteur */ @media (max-width: 600px){ #tent-container{ max-height: 420px; } } document.addEventListener("DOMContentLoaded", () => { const container = document.getElementById("tent-container"); if (!container || !window.THREE) return; /* ========================= 🔧 RÉGLAGES PRINCIPAUX ========================= */ const COLOR = 0x7C2C4F; const THICKNESS = 2; const ROT_SPEED = 0.01; const SCALE = 0.02; const MODEL_SCALE_MULT = 2.0; const FIT_PADDING = 1; const VIEW_ZOOM = 1.2; const CAMERA_SHIFT_X = -5; const CAMERA_SHIFT_Y = -3; const CURVE_STEPS = 36; const TRI_DEPTH = 250; const CURVE_OUT = 30; const CURVE_UP = 20; const INNER_BAR_Y = 80; const INNER_BAR_ON_TRIANGLE = 1; const INNER_VERTICAL_T = [0.30, 0.70, 0.90]; const INNER_VERTICAL_GAP = 0.5; const OUTER_MARGIN_X = 18; const OUTER_MARGIN_Y_TOP = 18; const OUTER_MARGIN_Y_BOT = 18; const OUTER_MARGIN_Z = 0; const FRONT_CUBE_ON_TRIANGLE = 1; const FRONT_CUBE_W = 155; const FRONT_CUBE_H = 25; const FRONT_CUBE_D = 100; const FRONT_CUBE_CX = 100; const FRONT_CUBE_CY = 125; const FRONT_CUBE_OFFSET_X = 0; const FRONT_CUBE_OFFSET_Y = 75; const FRONT_CUBE_OFFSET_Z = 0; const FRONT_CUBE_PUSH = 0; const FRONT_CUBE_GAP = 2; /* ---------- SCÈNE ---------- */ const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(45, 1, 0.1, 2000); camera.position.set(4, 2, 6); const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true }); renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2)); container.appendChild(renderer.domElement); const group = new THREE.Group(); const finalScale = SCALE * MODEL_SCALE_MULT; group.scale.set(finalScale, finalScale, finalScale); scene.add(group); const mat = new THREE.MeshBasicMaterial({ color: COLOR }); const up = new THREE.Vector3(0, 1, 0); function addThickSegment(a, b) { const dir = new THREE.Vector3().subVectors(b, a); const len = dir.length(); if (len 3D ========================= */ function V(x, y, z = 0) { return new THREE.Vector3(x - 100, -(y - 100), z); } function sampleQuadratic(p0, p1, p2, steps) { const pts = []; for (let i = 0; i <= steps; i++) { const t = i / steps; const mt = 1 - t; pts.push(new THREE.Vector3( mt*mt*p0.x + 2*mt*t*p1.x + t*t*p2.x, mt*mt*p0.y + 2*mt*t*p1.y + t*t*p2.y, mt*mt*p0.z + 2*mt*t*p1.z + t*t*p2.z )); } return pts; } function buildTriangle(zOffset) { const M = V(100, 30, zOffset); const E1 = V(160,170, zOffset); const L1 = V(40 ,170, zOffset); const Q1 = V(160 + CURVE_OUT, 110 - CURVE_UP, zOffset); const Q2 = V(40 - CURVE_OUT, 110 - CURVE_UP, zOffset); const cRight = sampleQuadratic(M, Q1, E1, CURVE_STEPS); const cLeft = sampleQuadratic(L1, Q2, M, CURVE_STEPS); for (let i = 0; i < cRight.length - 1; i++) addThickSegment(cRight[i], cRight[i+1]); addThickSegment(E1, L1); for (let i = 0; i < cLeft.length - 1; i++) addThickSegment(cLeft[i], cLeft[i+1]); return { top: M, left: L1, right: E1, cRight, cLeft, z: zOffset }; } const T1 = buildTriangle(-TRI_DEPTH / 2); const T2 = buildTriangle( TRI_DEPTH / 2); addThickSegment(T1.top, T2.top); addThickSegment(T1.left, T2.left); addThickSegment(T1.right, T2.right); function closestPointAtY(points, yTarget) { let best = points[0]; let bestD = Math.abs(points[0].y - yTarget); for (let i = 1; i < points.length; i++) { const d = Math.abs(points[i].y - yTarget); if (d { const x = xMin + (xMax - xMin) * t; addThickSegment( new THREE.Vector3(x, yBar, tri.z), new THREE.Vector3(x, yBase, tri.z) ); }); } const innerTri = (INNER_BAR_ON_TRIANGLE === 2) ? T2 : T1; addInnerBarAndVerticals(innerTri, INNER_BAR_Y); function buildOuterTriangleFrame(tri) { const z = tri.z + OUTER_MARGIN_Z; const M = V(100, 30 - OUTER_MARGIN_Y_TOP, z); const E1 = V(160 + OUTER_MARGIN_X, 170 + OUTER_MARGIN_Y_BOT, z); const L1 = V(40 - OUTER_MARGIN_X, 170 + OUTER_MARGIN_Y_BOT, z); const Q1 = V(160 + OUTER_MARGIN_X + CURVE_OUT, 110 - CURVE_UP, z); const Q2 = V(40 - OUTER_MARGIN_X - CURVE_OUT, 110 - CURVE_UP, z); const cRight = sampleQuadratic(M, Q1, E1, CURVE_STEPS); const cLeft = sampleQuadratic(L1, Q2, M, CURVE_STEPS); for (let i = 0; i < cRight.length - 1; i++) addThickSegment(cRight[i], cRight[i+1]); addThickSegment(E1, L1); for (let i = 0; i addThickSegment(a,b)); } const cubeTri = (FRONT_CUBE_ON_TRIANGLE === 2) ? T2 : T1; const faceCenter = V( FRONT_CUBE_CX + FRONT_CUBE_OFFSET_X, FRONT_CUBE_CY + FRONT_CUBE_OFFSET_Y, cubeTri.z ); const outwardSign = (cubeTri.z >= 0) ? +1 : -1; const cubeCenter = faceCenter.clone(); cubeCenter.z = cubeTri.z + outwardSign * (FRONT_CUBE_D / 2 + FRONT_CUBE_GAP + FRONT_CUBE_PUSH) + FRONT_CUBE_OFFSET_Z; addWireCube(cubeCenter, FRONT_CUBE_W, FRONT_CUBE_H, FRONT_CUBE_D); scene.add(new THREE.AmbientLight(0xffffff, 1)); function fitCamera(padding = 1.3, zoom = 1.0) { const box = new THREE.Box3().setFromObject(group); const sphere = new THREE.Sphere(); box.getBoundingSphere(sphere); const r = sphere.radius * padding; const halfFovV = THREE.MathUtils.degToRad(camera.fov * 0.5); const halfFovH = Math.atan(Math.tan(halfFovV) * camera.aspect); const distV = r / Math.sin(halfFovV); const distH = r / Math.sin(halfFovH); let dist = Math.max(distV, distH); dist = dist / zoom; const cx = sphere.center.x + CAMERA_SHIFT_X; const cy = sphere.center.y + CAMERA_SHIFT_Y; const cz = sphere.center.z; camera.position.set(cx + dist, cy + dist * 0.5, cz + dist); camera.lookAt(cx, cy, cz); camera.near = dist / 100; camera.far = dist * 100; camera.updateProjectionMatrix(); } /* ---------- RESPONSIVE ---------- */ function resize() { const rect = container.getBoundingClientRect(); const w = Math.max(1, Math.floor(rect.width)); const h = Math.max(1, Math.floor(rect.height)); renderer.setSize(w, h, false); camera.aspect = w / h; camera.updateProjectionMatrix(); fitCamera(FIT_PADDING, VIEW_ZOOM); } const ro = new ResizeObserver(resize); ro.observe(container); resize(); /* ---------- ANIMATION ---------- */ function animate() { requestAnimationFrame(animate); group.rotation.y += ROT_SPEED; renderer.render(scene, camera); } animate(); });

Cottages

Why choose a Pigne chalet for your family vacation?

When you choose to rent a Pigne chalet, you are opting for accommodation that combines:

  • the comfort of a modern chalet,
  • the charm of a wooden cottage,
  • the friendliness of a campsite in Lozère,
  • an ideal setting for families of up to 4 people,
  • an ideal location for exploring the landscapes and activities around Ispagnac.

The Pignes chalets appeal for their originality, spaciousness, and harmonious integration into the natural environment, offering an ideal alternative between traditional chalets and mobile homes.

Activities around Ispagnac

/* --- TIMELINE (5s total au lieu de 4s) --- 0–20% : dessin du cercle 20–35% : apparition des rayons 35–80% : rotation (plus lente) 80–100% : disparition douce (reset) */ /* CERCLE */ #sun-circle { stroke-dasharray: 100; animation: circleDraw 5s ease-in-out infinite; } @keyframes circleDraw { 0% { stroke-dashoffset: 100; opacity: 1; } 20% { stroke-dashoffset: 0; opacity: 1; } 80% { stroke-dashoffset: 0; opacity: 1; } 100% { stroke-dashoffset: 100; opacity: 0; } } /* RAYONS */ .ray { transform-origin: 20px 20px; animation: raysAnim 5s ease-in-out infinite; } @keyframes raysAnim { 0% { opacity: 0; transform: scale(0.9); } 20% { opacity: 0; transform: scale(0.9); } 35% { opacity: 1; transform: scale(1); } 80% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(0.9); } } /* ROTATION LENTE & FLUIDE */ #sun { transform-origin: 20px 20px; animation: spin 5s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 35% { transform: rotate(0deg); } 80% { transform: rotate(150deg); } /* rotation plus lente */ 100% { transform: rotate(360deg); } /* reset à la fin */ }
Chalet Pigne for families with terrace on the campsite near the Gorges du Tarn

Holidays

Campsite map with pitches, chalets, and mobile homes

Map of the 3-star Pré Morjal campsite in Ispagnac

Everything you need to know about renting our Pignes chalets

Combien de personnes peut accueillir un chalet Pigne ?

Un chalet Pigne peut accueillir jusqu’à 4 personnes. Il est donc parfaitement adapté aux familles ou aux séjours entre amis, avec des espaces pensés pour le confort et la convivialité au sein du camping Le Pré Morjal.

Chalet rental for family or friends “Les Pignes” in Lozère

Chaque chalet Pigne possède-t-il une terrasse privative ?

Oui, chaque chalet Pigne dispose d’une terrasse privative, aménagée pour profiter pleinement de l’extérieur.

Family staying in our Pigne chalet for a vacation near the Cévennes National Park

L’accès à la piscine est-il compris avec la location d’un chalet Pigne ?

Oui, l’accès à la piscine extérieure chauffée est inclus avec la location d’un chalet Pigne. N'hésitez pas à bien prendre en compte notre règlement intérieur concernant, par exemple, la surveillance de vos enfants ou le port du maillot de bain !

Chalet “Les Pignes” with two bedrooms, a fully equipped kitchen, and a terrace overlooking the Lozère region