three实现鼠标拖拽绘制房型户型2d平面图转3d效果图场景代码

代码语言:html

所属分类:三维

代码描述:three实现鼠标拖拽绘制房型户型2d平面图转3d效果图代码,支持设置窗户、门等参数设置。

代码标签: three 鼠标 拖拽 绘制 房型 户型 2d 平面图 3d 效果图 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!doctype html>
<html lang="zh-CN">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1" />
  <title>2D 户型绘制 → 3D 三维展示(Three.js CDN)</title>
  <style>
    html,body { height:100%; margin:0; font-family:system-ui, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB"; }
    .app {
      display:flex;
      height:100vh;
      gap:12px;
      padding:12px;
      box-sizing:border-box;
      background: #f4f6f8;
    }
    .panel {
      background:white;
      border-radius:8px;
      box-shadow: 0 6px 18px rgba(20,30,50,.08);
      padding:12px;
      box-sizing:border-box;
    }
    .left {
      width:420px;
      display:flex;
      flex-direction:column;
      gap:8px;
    }
    .right {
      flex:1;
      position:relative;
      min-width:360px;
      display:flex;
      flex-direction:column;
    }
    canvas#planCanvas {
      width:100%;
      height: 480px; /* Adjusted height */
      border:1px solid #e6e9ee;
      border-radius:6px;
      touch-action: none;
      background: repeating-linear-gradient(0deg,#fff,#fff 24px, #f8f9fb 24px, #f8f9fb 48px);
    }
    .controls { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
    button {
      padding:8px 12px;
      border-radius:6px;
      border:1px solid #d0d6df;
      background:#fff;
      cursor:pointer;
      transition: all 0.2s;
    }
    button:hover { background-color: #f8f9fb; }
    button.primary {
      background:#2563eb;color:#fff;border-color:#1e4ed8;
    }
    button.primary:hover { background-color: #1d4ed8; }
    label { font-size:13px; color:#233; }
    input[type=number] { width:64px; padding:6px; border-radius:6px; border:1px solid #d0d6df; }
    .hint { font-size:12px; color:#666; margin-top:4px; line-height: 1.5; }
    #threeContainer { flex:1; border-radius:8px; overflow:hidden; border:1px solid #e6e9ee; background:#eef3fb; }
    .toolbar { display:flex; gap:8px; align-items:center; margin-bottom: 8px; }
    .toolbar button.active {
        background: #e0e7ff;
        border-color: #4f46e5;
        color: #4f46e5;
        font-weight: 500;
    }
    .footerHint { font-size:12px; color:#666; padding-top:6px; }
    .coords { font-size:12px; color:#444; margin-left:auto; }
    .input-group { display:flex; flex-wrap: wrap; gap:8px; margin-top:6px; align-items:center;}
  </style>
</head>
<body>
  <div class="app">
    <div class="left panel">
      <h3>2D 户型绘制</h3>
      <div>
        <canvas id="planCanvas" width="800" height="960"></canvas>
      </div>
       <div class="toolbar">
        <button id="btnDrawWall" class="active">绘制墙体</button>
        <button id="btnAddWindow">添加窗户</button>
        <button id="btnAddDoor">添加门</button>
      </div>
      <div class="controls">
        <button id="btnUndo">撤销</button>
        <button id="btnClear">清空</button>
        <button id="btnFinish">完成阶段</button>
        <button class="primary" id="btnGenerate">生成 3D</button>
        <div class="coords" id="cursorPos">坐标: -</div>
      </div>
      <div class="input-group">
        <label>墙高(m)</label> <input id="wallHeight" type="number" value="2.8" step="0.1" min="0.5">
        <label>墙厚(m)</label> <input id="wallThickness" type="number" value="0.2" step="0.01" min="0.01">
        <label>缩放(px→m)</label> <input id="scale" type="number" value="50" step="1" min="1">
      </div>
       <div class="input-group">
        <label>窗宽(m)</label> <input id="windowWidth" type="number" value="1.5" step="0.1">
        <label>窗高(m)</label> <input id="windowHeight" type="number" value="1.2" step="0.1">
        <label>离地(m)</label> <input id="windowSill" type="number" value="0.9" step="0.1">
    .........完整代码请登录后点击上方下载按钮下载查看

网友评论0