threejs 微信小程序原生版本的使用 obj模型的加载
直接上代码,
const common_vendor = require("../../common/vendor.js");
Page({
onLoad() {
const query = common_vendor.index.createSelectorQuery().in(this);
query.select("#gl").boundingClientRect((x) => {
this.win = x;
}).exec();
common_vendor.index.createSelectorQuery().select("#gl").node().exec((res) => {
const canvas = this.canvas = res[0].node;
this.platform = new common_vendor.WechatPlatform(canvas);
common_vendor.PLATFORM.set(this.platform);
const scene = this.scene = new common_vendor.Scene();
scene.background = new common_vendor.Color(16777200);
scene.add(new common_vendor.AmbientLight(16777215, 1));
scene.add(new common_vendor.DirectionalLight(16777215, 1));
const camera = this.camera = new common_vendor.PerspectiveCamera(75, canvas.width / canvas.height, 0.1, 1e3);
camera.position.set(0, 7, 15);
const renderer = new common_vendor.WebGL1Renderer({ canvas, antialias: true, alpha: true });
renderer.outputEncoding = common_vendor.sRGBEncoding;
renderer.setSize(canvas.width, canvas.height);
renderer.setPixelRatio(common_vendor.$window.devicePixelRatio);
const controls = new common_vendor.OrbitControls(camera, canvas);
controls.enableDamping = true;
controls.dampingFactor = 0.25;
controls.enableZoom = true;
var textureLoader = new common_vendor.TextureLoader();
var texture = textureLoader.load("https://files.ifok.cn/m2photo");
texture.minFilter = common_vendor.LinearFilter;
var bump = textureLoader.load("https://files.ifok.cn/security_sign/design_fabric_skin/fabric004.png");
const loader = new common_vendor.OBJLoader();
loader.load("https://files.ifok.cn/m2_obj/x.obj", (object) => {
object.traverse((child) => {
child.material = new common_vendor.MeshStandardMaterial({
color: 11119017,
side: common_vendor.DoubleSide,
map: texture,
bumpMap: bump,
bumpScale: 2
});
});
object.scale.set(0.1, 0.1, 0.1);
object.position.set(0, -10, 0);
scene.add(object);
this.clo_object = object;
}, () => {
}, () => {
});
const axesHelper = new common_vendor.AxesHelper(10);
scene.add(axesHelper);
this.raycaster = new common_vendor.Raycaster();
this.mouse = new common_vendor.Vector2();
const render = () => {
if (!this.disposing)
this.frameId = common_vendor.$requestAnimationFrame(render);
controls.update();
renderer.render(scene, camera);
};
render();
});
},
onTX(e) {
this.platform.dispatchTouchEvent(e);
}
})
我使用的是three-platformize,可以通过npm install的方式直接安装的,小程序原生的npm我还没有试过,加载进去后用THREE替换掉common_vendor即可,加载器那里需要导入OBJLoader,然后就可以直接用了
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

