From ff73ae530f69c20c816e006bb4d5fc6b24ac7145 Mon Sep 17 00:00:00 2001 From: blobt Date: Tue, 8 Sep 2020 15:42:10 +0800 Subject: [PATCH] init --- .babelrc | 14 + dist/b3dd3229bb7d217104f5bbbe79a855e0.png | Bin 0 -> 29013 bytes dist/index.html | 14 + dist/main.js | 196 ++ package.json | 31 + src/css/style.css | 8 + src/index.js | 44 + src/model.js | 9 + src/res/Cube.obj | 70 + src/res/Quad.obj | 21 + src/res/Sphere.obj | 1970 +++++++++++++++++++++ src/res/back.bmp | Bin 0 -> 3145784 bytes src/res/bottom.bmp | Bin 0 -> 3145784 bytes src/res/earth.bmp | Bin 0 -> 1572918 bytes src/res/front.bmp | Bin 0 -> 3145784 bytes src/res/grass.png | Bin 0 -> 24576 bytes src/res/head.png | Bin 0 -> 29013 bytes src/res/left.bmp | Bin 0 -> 3145784 bytes src/res/right.bmp | Bin 0 -> 3145784 bytes src/res/stone.bmp | Bin 0 -> 73728 bytes src/res/top.bmp | Bin 0 -> 3145784 bytes src/res/wood.bmp | Bin 0 -> 270056 bytes webpack.config.js | 37 + 23 files changed, 2414 insertions(+) create mode 100644 .babelrc create mode 100644 dist/b3dd3229bb7d217104f5bbbe79a855e0.png create mode 100644 dist/index.html create mode 100644 dist/main.js create mode 100644 package.json create mode 100644 src/css/style.css create mode 100644 src/index.js create mode 100644 src/model.js create mode 100644 src/res/Cube.obj create mode 100644 src/res/Quad.obj create mode 100644 src/res/Sphere.obj create mode 100644 src/res/back.bmp create mode 100644 src/res/bottom.bmp create mode 100644 src/res/earth.bmp create mode 100644 src/res/front.bmp create mode 100644 src/res/grass.png create mode 100644 src/res/head.png create mode 100644 src/res/left.bmp create mode 100644 src/res/right.bmp create mode 100644 src/res/stone.bmp create mode 100644 src/res/top.bmp create mode 100644 src/res/wood.bmp create mode 100644 webpack.config.js diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..8e636de --- /dev/null +++ b/.babelrc @@ -0,0 +1,14 @@ +{ + "presets": [ + [ + "@babel/preset-env", + { + "targets": { + "chrome": "67" + }, + "useBuiltIns": "usage", + "corejs": "3.6.4" + } + ] + ] +} \ No newline at end of file diff --git a/dist/b3dd3229bb7d217104f5bbbe79a855e0.png b/dist/b3dd3229bb7d217104f5bbbe79a855e0.png new file mode 100644 index 0000000000000000000000000000000000000000..055c373f97a6a16579f477d034b5774e1c04abc0 GIT binary patch literal 29013 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 M07*qoM6N<$g2TRvg8%>k literal 0 HcmV?d00001 diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..392d723 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,14 @@ + + + + + My first three.js app + + + + + + \ No newline at end of file diff --git a/dist/main.js b/dist/main.js new file mode 100644 index 0000000..111b52b --- /dev/null +++ b/dist/main.js @@ -0,0 +1,196 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/css-loader/dist/cjs.js!./src/css/style.css": +/*!*****************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./src/css/style.css ***! + \*****************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _res_head_png__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../res/head.png */ \"./src/res/head.png\");\n// Imports\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1___default()(_res_head_png__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.i, \"@charset \\\"UTF-8\\\";\\r\\n\\r\\n.box {\\r\\n width: 300px;\\r\\n height: 300px;\\r\\n background-color: red;\\r\\n background-image: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");\\r\\n}\\r\\n\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack:///./src/css/style.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/api.js": +/*!*****************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/api.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}\n\n//# sourceURL=webpack:///./node_modules/css-loader/dist/runtime/api.js?"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/getUrl.js": +/*!********************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/getUrl.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== 'string') {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n'), \"\\\"\");\n }\n\n return url;\n};\n\n//# sourceURL=webpack:///./node_modules/css-loader/dist/runtime/getUrl.js?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": +/*!****************************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : undefined;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && btoa) {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of