当前位置: 首页 > news >正文

做面膜的网站wordpress小工具是哪个文件夹

做面膜的网站,wordpress小工具是哪个文件夹,北京装修公司前十强,wordpress豆瓣主题新项目为购车App涉及到全景图功能,经过搜索和咨询得到全景图的实现原理为从球内看球上的图片这一原理 思路就是在SceneKit的场景里放置一个球体,把全景图贴在球体表明,然后把相机放置在球体中心,通过旋转相机的角度得到全景图旋转…

新项目为购车App涉及到全景图功能,经过搜索和咨询得到全景图的实现原理为从球内看球上的图片这一原理

思路就是在SceneKit的场景里放置一个球体,把全景图贴在球体表明,然后把相机放置在球体中心,通过旋转相机的角度得到全景图旋转的效果。

现将demo放在下方以供参考

import UIKit
import SceneKitclass FullImageViewController: BaseViewController {// 全景图lazy var sceneView = {let sv = SCNView()sv.scene = SCNScene.init()return sv}()// 相机lazy var cameraNode = {let node = SCNNode()node.camera = SCNCamera.init()node.eulerAngles = currentEulerAnglesnode.position = SCNVector3Make(0, 0, 0)node.camera?.fieldOfView = 90return node}()// 球体lazy var sphere = {let sp = SCNSphere()// 半径sp.radius = 50// 只渲染一面,从球体里面看,外面就不用渲染了sp.firstMaterial?.isDoubleSided = true// 剔除外面sp.firstMaterial?.cullMode = .frontreturn sp}()// 当前相机的旋转角度(用于手势持续累加角度)private var currentEulerAngles = SCNVector3(0, Float.pi, 0)override func viewDidLoad() {super.viewDidLoad()sceneView.frame = CGRectMake(0, 90, view.frame.width, view.frame.width)view.addSubview(sceneView)// 把全景图“贴”到球体上sphere.firstMaterial?.diffuse.contents = flipImageLeftRight(UIImage.init(named: "full_image")!)// 球体Node,位置放到场景原点let sphereNode = SCNNode.init(geometry: sphere)sphereNode.position = SCNVector3Make(0, 0, 0)sceneView.scene?.rootNode.addChildNode(sphereNode)// 相机Node,位置放到场景原点sceneView.scene?.rootNode.addChildNode(cameraNode)sceneView.allowsCameraControl = false// 添加拖动手势识别器,用于控制视角旋转let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))sceneView.addGestureRecognizer(panGesture)}// 手势@objc func handlePan(_ gesture: UIPanGestureRecognizer) {let translation = gesture.translation(in: sceneView)//视角向右(正方向),向左(负方向)let deltaYaw = Float(translation.x) * (Float.pi / 180) * 0.5//视角往上(正方向), 视角往下(负方向)let deltaPitch = Float(translation.y) * (Float.pi / 180) * 0.5if gesture.state == .changed {var newX = currentEulerAngles.x + deltaPitchlet newY = currentEulerAngles.y + deltaYaw// 限制上下角度在 ±90° 内,防止翻转newX = max(min(newX, Float.pi / 2), -Float.pi / 2)cameraNode.eulerAngles = SCNVector3(newX, newY, 0)}if gesture.state == .ended {currentEulerAngles = cameraNode.eulerAngles}}// 图片翻转func flipImageLeftRight(_ image: UIImage) -> UIImage? {UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale)let context = UIGraphicsGetCurrentContext()!context.translateBy(x: image.size.width, y: image.size.height)context.scaleBy(x: -image.scale, y: -image.scale)context.draw(image.cgImage!, in: CGRect(origin: CGPoint.zero, size: image.size))let newImage = UIGraphicsGetImageFromCurrentImageContext()UIGraphicsEndImageContext()return newImage}}

import UIKit

import SceneKit

class FullImageViewController: BaseViewController {

    // 全景图

    lazy var sceneView = {

        let sv = SCNView()

        sv.scene = SCNScene.init()

        return sv

    }()

    // 相机

    lazy var cameraNode = {

        let node = SCNNode()

        node.camera = SCNCamera.init()

        node.eulerAngles = currentEulerAngles

        node.position = SCNVector3Make(0, 0, 0)

        node.camera?.fieldOfView = 90

        return node

    }()

    // 球体

    lazy var sphere = {

        let sp = SCNSphere()

        // 半径

        sp.radius = 50

        // 只渲染一面,从球体里面看,外面就不用渲染了

        sp.firstMaterial?.isDoubleSided = true

        // 剔除外面

        sp.firstMaterial?.cullMode = .front

        return sp

    }()

    // 当前相机的旋转角度(用于手势持续累加角度)

    private var currentEulerAngles = SCNVector3(0, Float.pi, 0)

    override func viewDidLoad() {

        super.viewDidLoad()

        sceneView.frame = CGRectMake(0, 90, view.frame.width, view.frame.width)

        view.addSubview(sceneView)

        // 把全景图“贴”到球体上

        sphere.firstMaterial?.diffuse.contents = flipImageLeftRight(UIImage.init(named: "full_image")!)

        // 球体Node,位置放到场景原点

        let sphereNode = SCNNode.init(geometry: sphere)

        sphereNode.position = SCNVector3Make(0, 0, 0)

        sceneView.scene?.rootNode.addChildNode(sphereNode)

        // 相机Node,位置放到场景原点

        sceneView.scene?.rootNode.addChildNode(cameraNode)

        sceneView.allowsCameraControl = false

        // 添加拖动手势识别器,用于控制视角旋转

        let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))

        sceneView.addGestureRecognizer(panGesture)

    }

    // 手势

    @objc func handlePan(_ gesture: UIPanGestureRecognizer) {

        let translation = gesture.translation(in: sceneView)

        //视角向右(正方向),向左(负方向)

        let deltaYaw = Float(translation.x) * (Float.pi / 180) * 0.5

        //视角往上(正方向), 视角往下(负方向)

        let deltaPitch = Float(translation.y) * (Float.pi / 180) * 0.5

        if gesture.state == .changed {

            var newX = currentEulerAngles.x + deltaPitch

            let newY = currentEulerAngles.y + deltaYaw

            // 限制上下角度在 ±90° 内,防止翻转

            newX = max(min(newX, Float.pi / 2), -Float.pi / 2)

            cameraNode.eulerAngles = SCNVector3(newX, newY, 0)

        }

        if gesture.state == .ended {

            currentEulerAngles = cameraNode.eulerAngles

        }

    }

    // 图片翻转

    func flipImageLeftRight(_ image: UIImage) -> UIImage? {

        UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale)

        let context = UIGraphicsGetCurrentContext()!

        context.translateBy(x: image.size.width, y: image.size.height)

        context.scaleBy(x: -image.scale, y: -image.scale)

        context.draw(image.cgImage!, in: CGRect(origin: CGPoint.zero, size: image.size))

        let newImage = UIGraphicsGetImageFromCurrentImageContext()

        UIGraphicsEndImageContext()

        return newImage

    }

}

参考文献:iOS 使用 SceneKit 实现全景图项目里碰到了展示全景图的需求,以前没做过,google了一下已经有不少现成的库 - 掘金

http://www.dtcms.com/a/530561.html

相关文章:

  • 做网站百度推广多少钱外贸网站设计公司价格
  • 做网站的抬头标语怎么flash asp设计公司网站源码
  • 那个网站做排列五头比较准电子外发加工网
  • 即墨网站建设在哪wordpress怎么更改首页海报轮播图
  • 义乌外贸网站制作网站图片列表怎么做
  • 网站服务器怎么做安全防护工程建设业绩公示网站
  • 佛山网站建设 骏域医学教育网站建设方案
  • 网络彩票建立网站秦皇岛网站制作
  • 个人网站做项目工业设计大赛官网
  • RDF 容器:构建语义网的关键技术
  • 设置网站默认首页网站上面的主导航条怎么做
  • 国外的网站叫什么淳安网站建设
  • 企业网站开发 外文文献WordPress任务悬赏 插件
  • 大淘客网站建设wordpress数据搬移
  • 网站理念正品手表官网
  • 银川网站制作公司怎么做公司内网网站
  • 昆明做网站建设的公司建站快车产品介绍
  • 合肥论坛网站制作wordpress 修改目录权限
  • 石家庄网站开发与优化小说网站签约作者应该怎么做
  • 网站推广排名平台开发商逾期交房可以申请退房吗
  • 牡丹江网站建设用什么软件做网站好处
  • 免费网站怎么赚钱上海中高风险地区有哪些
  • 洛江区建设局网站做新的网站
  • 鞍山做网站必要商城官网
  • 会HTML怎么做网站网站建设 服务内容 费用
  • 查看网站模板魏县网站建设推广
  • 什么是域名访问网站黑糖不苦建设的网站
  • php网站开发实用技术练习题做百度推广 建自己的网站
  • 三亚网站定制wordpress 调用文章内容
  • 达州城乡建设网站电子毕业设计代做网站