VE Lua Documentation

Press F to search!

quatFromEuler

Definition


-- @/lua/common/mathlib.lua:1120

function quatFromEuler(x, y, z) -- in radians
  local q = newLuaQuatxyzw(0, 0, 0, 1)
  q:setFromEuler(x, y, z)
  return q
end

Callers

@/lua/ge/extensions/gameplay/sites/parkingSpot.lua
    end
    rot = quatFromEuler(0,0,self.multiSpotData.spotRotation) * rot
    local pos = self.pos + dirVec
  self.rotOrig = quat(self.rot)
  self.rot = quatFromEuler(0, 0, self.multiSpotData.spotRotation) * self.rotOrig
  self:calcVerts()
      local pos = self.pos + dirVec
      local rot = quatFromEuler(0, 0, self.multiSpotData.spotRotation) * self.rotOrig
      local newSpot = parkingSpotList:create(self.name .. "." .. (i + 1))
@/lua/ge/extensions/scenario/quickRace.lua
      local sp = sc.path.startPositions.objects[sc.path[id]]
      local rot = quatFromEuler(0,0,math.pi) * sp.rot
      local x, y, z = rot * vec3(1,0,0), rot * vec3(0,1,0), rot * vec3(0,0,1)
@/lua/ge/extensions/core/cameraModes/onboard.lua
  q = q or quat()
  q = quatFromEuler(0, z, 0) * q
  q = quatFromEuler(0, 0, x) * q
  q = quatFromEuler(0, z, 0) * q
  q = quatFromEuler(0, 0, x) * q
  q = quatFromEuler(y, 0, 0) * q
  q = quatFromEuler(0, 0, x) * q
  q = quatFromEuler(y, 0, 0) * q
  return q
@/lua/ge/extensions/gameplay/parking.lua
    offsetPos = vec3(xRandom * offsetVal * xGap, yRandom * offsetVal * yGap, 0)
    offsetRot = quatFromEuler(0, 0, (randomGauss3() / 3 - 0.5) * offsetVal * 0.25)
  end
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/veLightsDebug.lua

local q1 = quatFromEuler(0, 0, math.pi * 11/12)
local q2 = quatFromEuler(0, 0, -math.pi * 11/12)
local q1 = quatFromEuler(0, 0, math.pi * 11/12)
local q2 = quatFromEuler(0, 0, -math.pi * 11/12)
local q3 = quatFromEuler(0, math.pi / 2, 0)
local q2 = quatFromEuler(0, 0, -math.pi * 11/12)
local q3 = quatFromEuler(0, math.pi / 2, 0)
@/lua/ge/extensions/editor/roadUtils.lua
    if factor ~= 0 then
      rotation = quatFromEuler(0, 0, math.random() * math.pi)
    else
      local decoID = roadDecorations.decorateProps(road:getID(), decorationSettings.shapeName, tonumber(decorationSettings.distance),
                                                  tonumber(decorationSettings.period), quatFromEuler(0,0,(tonumber(decorationSettings.rotation)/360) * 2*math.pi),
                                                  tonumber(decorationSettings.zOff), decorationSettings.align == "true")
@/lua/ge/extensions/ui/apps/minimap/minimap.lua
  if debugSettings.behaviourRotateWithCam then
    camRot = quatFromEuler(0,0,rad)
  else
  else
    camRot = quatFromEuler(0,0,0)
  end
@/lua/ge/extensions/flowgraph/nodes/types/transform.lua
      self.euler = {x = eul[0]/180*math.pi, y = eul[1]/180*math.pi, z = eul[2]/180*math.pi}
      self.rotation = quatFromEuler(eul[0]/180*math.pi,eul[1]/180*math.pi,eul[2]/180*math.pi)
      self.reason = "Changed Rotation"
  builder:Middle()
  --local euler = quatFromEuler(self.rotation.x, self.rotation.y, self.rotation.z)
  local rot = self.rotation
@/lua/ge/extensions/trackbuilder/trackBuilder.lua
        extra = vec3(o.extra[0],o.extra[1],o.extra[2]),
        rotation = quatFromEuler(o.rotation[0]/180 * math.pi,o.rotation[1]/180 * math.pi,(o.rotation[2])/180 * math.pi),
        rotationEuler = vec3(o.rotation[0],o.rotation[1],o.rotation[2]),
@/lua/ge/extensions/flowgraph/nodes/scene/raceLineParking.lua
    for i = 0, 24 do
      local off = quatFromEuler(0,0,math.pi*i/12) * vec3(rad, 0,0)
      table.insert(list,vec3(140,150)+vec3(tlCenter.x, tlCenter.y)+off)
@/lua/ge/extensions/util/trackBuilder/multiTrackMerger.lua
      position = t0 * p0 + t1 * p1 + t2 * p2 + t3 * p3,
      rot = quatFromEuler(math.pi, 0, 0):__mul(quatFromEuler(0, 0, -hdg - math.pi / 2)),
      quality = quality
      position = t0 * p0 + t1 * p1 + t2 * p2 + t3 * p3,
      rot = quatFromEuler(math.pi, 0, 0):__mul(quatFromEuler(0, 0, -hdg - math.pi / 2)),
      quality = quality

    p.finalRot = quatFromEuler(
          p.pitch,
@/lua/ge/extensions/tech/utils.lua
    offsetNode = camNodeID or 0,
    rotation = quatFromEuler(0, 0, 0),
    resolutionX = output.width, resolutionY = output.height,
@/lua/ge/extensions/util/instancedLineRenderDemo.lua
  rotY = 50 -- dt * 0.5
  local rot = quatFromEuler(0, math.rad(rotY), 0)
@/lua/ge/extensions/flowgraph/nodes/scene/rectMarker.lua
end
local qOff = quatFromEuler(0,0,math.pi/2)*quatFromEuler(0,math.pi/2,math.pi/2)
function C:updateMarkerPositions()
end
local qOff = quatFromEuler(0,0,math.pi/2)*quatFromEuler(0,math.pi/2,math.pi/2)
function C:updateMarkerPositions()
      corner = (tpos-xVec*d+yVec*w)
      r = quatFromEuler(0, 0, math.rad(90))
    elseif k == 2 then --Top Right
      corner = (tpos+xVec*d+yVec*w)
      r = quatFromEuler(0, 0, math.rad(180))
    elseif k == 3 then --Bottom Right
      corner = (tpos+xVec*d-yVec*w)
      r = quatFromEuler(0, 0, math.rad(270))
    elseif k == 4 then --Botton Left
      corner = (tpos-xVec*d-yVec*w)
      r =  quatFromEuler(0, 0, 0)
    end
@/lua/ge/extensions/core/cameraModes/relative.lua
  q = q or quat()
  q = quatFromEuler(0, z, 0) * q
  q = quatFromEuler(0, 0, x) * q
  q = quatFromEuler(0, z, 0) * q
  q = quatFromEuler(0, 0, x) * q
  q = quatFromEuler(y, 0, 0) * q
  q = quatFromEuler(0, 0, x) * q
  q = quatFromEuler(y, 0, 0) * q
  return q
@/lua/ge/extensions/flowgraph/nodes/util/randomQuaternion.lua
  local q = quat(0, 0, 0, 1)
  q = quatFromEuler(x, 0, 0) * q
  q = quatFromEuler(0, y, 0) * q
  q = quatFromEuler(x, 0, 0) * q
  q = quatFromEuler(0, y, 0) * q
  q = quatFromEuler(0, 0, z) * q
  q = quatFromEuler(0, y, 0) * q
  q = quatFromEuler(0, 0, z) * q
  self.pinOut.quaternion.value = q:toTable()
@/gameplay/missionTypes/scatterPickup/customNodes/scatterPrefabSetupNode.lua
          local fwd = vec3(0,1,0):projectToOriginPlane(point.normal)
          local rot = quatFromEuler(0,0,math.random() * 360) * quatFromDir(fwd, point.normal)
          local trot = rot:toTorqueQuat()
@/lua/ge/extensions/editor/gen/exp_meshexplorer.lua
--            core_camera.setPosition(0, vec3(0, 5, 5))
--            core_camera.setRotation(0, quatFromEuler(0,0,math.pi/2)) --(0, 0, math.pi/2),)
--            core_camera.setRotation(0, quatFromEuler(math.pi/4,0,0)) --(0, 0, math.pi/2),)
--            core_camera.setRotation(0, quatFromEuler(0,0,math.pi/2)) --(0, 0, math.pi/2),)
--            core_camera.setRotation(0, quatFromEuler(math.pi/4,0,0)) --(0, 0, math.pi/2),)
--            core_camera.setRotation(0, quatFromDir(vec3(1,1,0))) --(0, 0, math.pi/2),)
@/lua/ge/extensions/core/vehicle/mirror.lua

  local q = quatFromEuler(mrad(x),mrad(0),mrad(z))
  mirror.offsetNormal = vec3(0,1,0):rotated(q)
@/flowgraphEditor/Tower/customNodes/towerNode.lua
  self.objects = {}
  local lastPos, lastRot = vec3(0,0,200), quatFromEuler(0,0,0)
    lastPos = goal:getPosition() + q * vec3(0,4,0)
    lastRot = quat(goal:getRotation()) * quatFromEuler(0,0,-math.pi/2)
  end
@/lua/ge/extensions/editor/objectToSplineEditor.lua
        local useXY = params.useRandomRotXY
        rotOffset:set(quatFromEuler(useXY and getRandom(n, params.useGauss) or 0, useXY and getRandom(n, params.useGauss) or 0, getRandom(n, params.useGauss)))
      end

      table.insert(points, {pos = pos, rot = quatFromDir(dirVec, dirVecUp) * rotOffset * quatFromEuler(math.pi, math.pi, math.pi)})
      count = count + 1
@/lua/ge/extensions/gameplay/race/startPosition.lua
  local newPos = newFLPos + newOffset
  local vehRot = quatFromEuler(0,0,math.pi) * self.rot
@/lua/ge/extensions/util/trackBuilder/obstaclePlacer.lua
local M = {}
local turn90 = quatFromEuler(0,0,math.pi/2)
local obstacleTypes = {}
@/lua/ge/extensions/tech/multiscreen.lua
    position = vec3(positionX or 0, positionY or 0, positionZ or 0),
    rotation = quatFromEuler(rotationX or 0, rotationY or 0, rotationZ or 0),
    resolutionX = resolutionX or 1080, resolutionY = resolutionY or 720,
@/lua/ge/extensions/core/cameraModes/unicycle.lua
  q = q or quat()
  q = quatFromEuler(0, z, 0) * q
  q = quatFromEuler(0, 0, x) * q
  q = quatFromEuler(0, z, 0) * q
  q = quatFromEuler(0, 0, x) * q
  q = quatFromEuler(y, 0, 0) * q
  q = quatFromEuler(0, 0, x) * q
  q = quatFromEuler(y, 0, 0) * q
  return q
@/lua/ge/extensions/editor/sitesEditor/parkingSpots.lua
        end
        rot = quatFromEuler(0, 0, node.multiSpotData.spotRotation) * rot
        local pos = node.pos + dirVec
@/lua/ge/extensions/flowgraph/nodes/vehicle/alignForCoupling.lua
        if type(self.pinIn.rot.value) == 'number' then
          desiredRot = quatFromEuler(0,0,self.pinIn.rot.value/180 * math.pi)
        elseif type(self.pinIn.rot.value) == 'table' then
@/lua/ge/extensions/editor/renderTest.lua

    local rot = quatFromEuler(math.pi * 0.5, 0, 0)
@/lua/ge/extensions/util/trackBuilder/splineTrack.lua
  local scale = (size or p.width) / 2 + 1
  local quat = quatFromEuler(0, 0, -math.pi / 2):__mul(rot):toTorqueQuat()

  local rot = quatFromEuler(0, math.pi, math.pi):__mul(point.rot)
  if reverse then
  if reverse then
    rot = rot:__mul(quatFromEuler(0, 0, math.pi))
  end
    trackPosition.hdg = -hdg
    trackPosition.rot = quatFromEuler(0, 0, hdg)
  end
  -- rotated unit vectors for snapping points to a grid
  trackPosition.unitX = quatFromEuler(0, 0, trackPosition.hdg):__mul(vec3(1, 0, 0))
  trackPosition.unitY = quatFromEuler(0, 0, trackPosition.hdg):__mul(vec3(0, 1, 0))
  trackPosition.unitX = quatFromEuler(0, 0, trackPosition.hdg):__mul(vec3(1, 0, 0))
  trackPosition.unitY = quatFromEuler(0, 0, trackPosition.hdg):__mul(vec3(0, 1, 0))
  -- place and rotate the origin piece of the track and invalidate whole track
  if cameraUp < math.pi / 4 then cameraUp = math.pi / 4 end
  q = quatFromEuler(cameraUp, 0, 0):__mul(quatFromEuler(0, 0, cameraAngle))
  if cameraUp < math.pi / 4 then cameraUp = math.pi / 4 end
  q = quatFromEuler(cameraUp, 0, 0):__mul(quatFromEuler(0, 0, cameraAngle))
        point.uvY = point.length
        point.finalRot = quatFromEuler(
          point.pitch,

    segment.markerInfo.rot = quatFromEuler(
      segment.markerInfo.pitch,
      (-segment.markerInfo.bank / 180) * math.pi + math.pi,
    0):__mul(quatFromEuler(0, math.pi, segment.hdg))
    segment.markerInfo.position = segment.markerInfo.basePosition + vec3(0, 0, segment.markerInfo.zOffset)
    if segment.invalid then
      segment.rot = quatFromEuler(math.pi, 0, 0):__mul(quatFromEuler(0, 0, segment.hdg + math.pi))
      --segment.material = "track_editor_base"
    if segment.invalid then
      segment.rot = quatFromEuler(math.pi, 0, 0):__mul(quatFromEuler(0, 0, segment.hdg + math.pi))
      --segment.material = "track_editor_base"
      position = arcCenter + vec3(math.cos(angle), math.sin(angle), 0) * segment.radius * gridScale,
      rot = quatFromEuler(math.pi, 0, 0):__mul(quatFromEuler(0, 0, -hdg - math.pi / 2)),
      quality = quality
      position = arcCenter + vec3(math.cos(angle), math.sin(angle), 0) * segment.radius * gridScale,
      rot = quatFromEuler(math.pi, 0, 0):__mul(quatFromEuler(0, 0, -hdg - math.pi / 2)),
      quality = quality
      position = t0 * p0 + t1 * p1 + t2 * p2 + t3 * p3,
      rot = quatFromEuler(math.pi, 0, 0):__mul(quatFromEuler(0, 0, -hdg - math.pi / 2)),
      quality = quality
      position = t0 * p0 + t1 * p1 + t2 * p2 + t3 * p3,
      rot = quatFromEuler(math.pi, 0, 0):__mul(quatFromEuler(0, 0, -hdg - math.pi / 2)),
      quality = quality
      ),
      rot = p.rot:__mul(quatFromEuler(math.pi, 0, 0):__mul(quatFromEuler(0, 0, piece.hdg + math.pi))),
    quality = {}}
      ),
      rot = p.rot:__mul(quatFromEuler(math.pi, 0, 0):__mul(quatFromEuler(0, 0, piece.hdg + math.pi))),
    quality = {}}
          o.rotationEuler = vec3(o.rotationEuler.x, o.rotationEuler.y, o.rotationEuler.z)
          o.rotation = quatFromEuler(o.rotationEuler.x / 180 * math.pi, o.rotationEuler.y / 180 * math.pi, (o.rotationEuler.z) / 180 * math.pi)
          --o.material = o.material
@/lua/ge/extensions/core/cameraModes/trackir.lua
  q = q or quat()
  q = quatFromEuler(0, 0, x) * q
  q = quatFromEuler(0, z, 0) * q
  q = quatFromEuler(0, 0, x) * q
  q = quatFromEuler(0, z, 0) * q
  q = quatFromEuler(y, 0, 0) * q
  q = quatFromEuler(0, z, 0) * q
  q = quatFromEuler(y, 0, 0) * q
  return q
@/lua/ge/extensions/tech/impactgen/crashOutput.lua
local function continueLinear(request, angle, aPos, bPos, bRot, throttle, config, ego, other)
  local rot = quatFromEuler(0, 0, math.rad(angle))
  ego:setPositionRotation(aPos[1], aPos[2], aPos[3], rot.x, rot.y, rot.z, rot.w)
  ego:setPositionRotation(aPos[1], aPos[2], aPos[3], rot.x, rot.y, rot.z, rot.w)
  rot = quatFromEuler(math.rad(bRot[1]), math.rad(bRot[2]), math.rad(bRot[3]))
  other:setPositionRotation(bPos[1], bPos[2], bPos[3], rot.x, rot.y, rot.z, rot.w)
local function continueTBone(request, angle, aPos, bPos, bRot, throttle, config, ego, other)
  local rot = quatFromEuler(0, 0, math.rad(angle))
  ego:setPositionRotation(aPos[1], aPos[2], aPos[3], rot.x, rot.y, rot.z, rot.w)
  ego:setPositionRotation(aPos[1], aPos[2], aPos[3], rot.x, rot.y, rot.z, rot.w)
  rot = quatFromEuler(math.rad(bRot[1]), math.rad(bRot[2]), math.rad(bRot[3]))
  other:setPositionRotation(bPos[1], bPos[2], bPos[3], rot.x, rot.y, rot.z, rot.w)
local function continuePole(request, angle, pos, throttle, config, ego)
  local rot = quatFromEuler(0, 0, math.rad(angle))
  ego:setPositionRotation(pos[1], pos[2], pos[3], rot.x, rot.y, rot.z, rot.w)
@/lua/ge/extensions/util/trackBuilder/proceduralPrimitives.lua
    local outerRad = (i-1) * math.pi*2 / outerSegments
    local quat = quatFromEuler(-outerRad,0,0)
    local outerCenter = vec3(0,math.sin(-outerRad) * radius,math.cos(-outerRad)*radius)
    local point = vec3(math.cos(rad), math.sin(rad),0)
    local quat = quatFromEuler(0,0,-rad)
    local quatC = quatFromEuler(0,0,-(i-0.5) * math.pi*2 / segments)
    local quat = quatFromEuler(0,0,-rad)
    local quatC = quatFromEuler(0,0,-(i-0.5) * math.pi*2 / segments)
    vertices[#vertices+1] = {x = point.x * radius, y = point.y * radius, z = point.z - height/2}
@/lua/ge/extensions/util/trackBuilder/pieces.lua
  --rotate the offset by the hdg of the previous piece.
  off = M.rotateVectorByQuat(off, quatFromEuler(0,0,tipPiece.hdg))
  local bzLength = 0.552284749831
    --rotate the offset by the hdg of the previous piece.
    off = M.rotateVectorByQuat(off, quatFromEuler(0,0,tipPiece.hdg))
    return
  off.x = off.x * sign(dir)
  off = M.rotateVectorByQuat(off, quatFromEuler(0,0,tipPiece.hdg))
  off.x = off.x * sign(dir)
  off = M.rotateVectorByQuat(off, quatFromEuler(0,0,tipPiece.hdg))
    off:set(-off.x,off.y, 0)
    off = quatFromEuler(0,0,angle):__mul(off)
  end
  off.x = off.x * sign(dir)
  off = M.rotateVectorByQuat(off, quatFromEuler(0,0,tipPiece.hdg))
        ),
      rot = quatFromEuler(tan,0,0)
    }
    local tan = -(math.atan2(len,slope) - math.pi/2)
    local nq = quatFromEuler(0,0,-tan*4):__mul(customPoints[i+1].rot)
    customPoints[i+1].rot = nq
    position = vec3(-offset, -radius, 0),
    rot = quatFromEuler(0,0,0)
  }
    position = vec3(0,0, 0),
    rot = quatFromEuler(0,0,0)
  }
@/lua/ge/extensions/gameplay/race/pathnode.lua
-- side detail procedural generator
local qOff = quatFromEuler(0,0,math.pi/2)*quatFromEuler(0,math.pi/2,math.pi/2)
function C:convertRayHitToTransform(hit, pRot, zOff, scl, side, alignMode)
-- side detail procedural generator
local qOff = quatFromEuler(0,0,math.pi/2)*quatFromEuler(0,math.pi/2,math.pi/2)
function C:convertRayHitToTransform(hit, pRot, zOff, scl, side, alignMode)
  return {
    self:convertRayHitToTransform(hitLeft,  quatFromEuler(rotOffset.x, -rotOffset.y, -rotOffset.z), posOffset.z, sclOffset,'l', alignMode),
    self:convertRayHitToTransform(hitRight, quatFromEuler(rotOffset.x,  rotOffset.y,  rotOffset.z), posOffset.z, sclOffset,'r', alignMode)
    self:convertRayHitToTransform(hitLeft,  quatFromEuler(rotOffset.x, -rotOffset.y, -rotOffset.z), posOffset.z, sclOffset,'l', alignMode),
    self:convertRayHitToTransform(hitRight, quatFromEuler(rotOffset.x,  rotOffset.y,  rotOffset.z), posOffset.z, sclOffset,'r', alignMode)
  }
@/lua/common/jbeam/sections/mirror.lua
        if v.baseRotationGlobal then
          local q = quatFromEuler(mrad(v.baseRotationGlobal.x),mrad(v.baseRotationGlobal.y),mrad(v.baseRotationGlobal.z))
          mirror.normal = vec3(0,1,0):rotated(q)
          log("E","proc","offsetRotationGlobal is depracted, fix mesh normals "..dumps(v.mesh))
          local q = quatFromEuler(mrad(v.offsetRotationGlobal.x),mrad(v.offsetRotationGlobal.y),mrad(v.offsetRotationGlobal.z))
          mirror.offsetNormal = vec3(0,1,0):rotated(q)
@/lua/ge/extensions/editor/decalEditor.lua
    if editor.uiInputFloat3(string.format("##rot_%d_%s", selectedInstance.id, label), input4FloatValue, "%.1f", im.InputTextFlags_EnterReturnsTrue, nil) then
      local decalRot = quatFromEuler(degToRad(input4FloatValue[0]), degToRad(input4FloatValue[1]), degToRad(input4FloatValue[2]))
      selectedInstance.normal = decalRot:__mul(vec3(0,0,1))
local function rotateAround(instance, euler, rotationPoint)
  local rot = quatFromEuler(euler.x, euler.y, euler.z)
@/lua/ge/extensions/editor/crawlEditor/boundaries.lua
    if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
      local q = quatFromDir(quatFromEuler(0, math.pi / 2, 0) * self.currentPlane.normal, vec3(0, 0, 1))
      rotation = QuatF(q.x, q.y, q.z, q.w)
  if self.currentPlane then
    self.beginDragRotation = deepcopy(quatFromDir(quatFromEuler(0, math.pi / 2, 0) * self.currentPlane.normal, vec3(0, 0, 1)))
  end
@/lua/ge/extensions/flowgraph/nodes/scene/camera/procedural/procDirectPath.lua
    fwd = fwd:normalized()
    local fq = quatFromEuler(math.pi / 4, 0, 0) * quatFromDir(fwd)
    local d = fq * vec3(0, -12, 0)

    mid.rot = (quatFromEuler(math.pi * 0.3, 0, 0) * quatFromDir(fwd)):slerp(quatFromDir(tt, tu), 1)
    mid.time = duration / 14 * 7
@/lua/ge/extensions/flowgraph/nodes/environment/planet.lua
  local rots = {
    {id = 'u', quat = quatFromEuler(0,0,0)},
    {id = 'f', quat = quatFromEuler(math.pi/2,0,0)},
    {id = 'u', quat = quatFromEuler(0,0,0)},
    {id = 'f', quat = quatFromEuler(math.pi/2,0,0)},
    {id = 'r', quat = quatFromEuler(0,0,math.pi/2)*quatFromEuler(0,-math.pi/2,0)   },
    {id = 'f', quat = quatFromEuler(math.pi/2,0,0)},
    {id = 'r', quat = quatFromEuler(0,0,math.pi/2)*quatFromEuler(0,-math.pi/2,0)   },
    {id = 'l', quat = quatFromEuler(0,0,-math.pi/2)*quatFromEuler(0,math.pi/2,0)  },
    {id = 'f', quat = quatFromEuler(math.pi/2,0,0)},
    {id = 'r', quat = quatFromEuler(0,0,math.pi/2)*quatFromEuler(0,-math.pi/2,0)   },
    {id = 'l', quat = quatFromEuler(0,0,-math.pi/2)*quatFromEuler(0,math.pi/2,0)  },
    {id = 'r', quat = quatFromEuler(0,0,math.pi/2)*quatFromEuler(0,-math.pi/2,0)   },
    {id = 'l', quat = quatFromEuler(0,0,-math.pi/2)*quatFromEuler(0,math.pi/2,0)  },
    {id = 'b', quat = quatFromEuler(0,0,math.pi)*quatFromEuler(-math.pi/2,0,0)  },
    {id = 'r', quat = quatFromEuler(0,0,math.pi/2)*quatFromEuler(0,-math.pi/2,0)   },
    {id = 'l', quat = quatFromEuler(0,0,-math.pi/2)*quatFromEuler(0,math.pi/2,0)  },
    {id = 'b', quat = quatFromEuler(0,0,math.pi)*quatFromEuler(-math.pi/2,0,0)  },
    {id = 'l', quat = quatFromEuler(0,0,-math.pi/2)*quatFromEuler(0,math.pi/2,0)  },
    {id = 'b', quat = quatFromEuler(0,0,math.pi)*quatFromEuler(-math.pi/2,0,0)  },
    {id = 'd', quat = quatFromEuler(math.pi,0,0)},
    {id = 'l', quat = quatFromEuler(0,0,-math.pi/2)*quatFromEuler(0,math.pi/2,0)  },
    {id = 'b', quat = quatFromEuler(0,0,math.pi)*quatFromEuler(-math.pi/2,0,0)  },
    {id = 'd', quat = quatFromEuler(math.pi,0,0)},
    {id = 'b', quat = quatFromEuler(0,0,math.pi)*quatFromEuler(-math.pi/2,0,0)  },
    {id = 'd', quat = quatFromEuler(math.pi,0,0)},
  }
@/lua/ge/extensions/editor/vehicleEditor/liveEditor/vePropTransformer.lua

local q1 = quatFromEuler(0, 0, math.pi * 11/12)
local q2 = quatFromEuler(0, 0, -math.pi * 11/12)
local q1 = quatFromEuler(0, 0, math.pi * 11/12)
local q2 = quatFromEuler(0, 0, -math.pi * 11/12)
local q3 = quatFromEuler(0, math.pi / 2, 0)
local q2 = quatFromEuler(0, 0, -math.pi * 11/12)
local q3 = quatFromEuler(0, math.pi / 2, 0)
@/lua/ge/extensions/flowgraph/nodes/mission/ARunForLife.lua
        local newRot = propsInfo[randomPropId].correctedRot
        if newRot then rot = quatFromEuler(unpack(newRot)) end
      end
@/lua/ge/extensions/editor/sitesEditor/zones.lua
    if editor.getAxisGizmoAlignment() == editor.AxisGizmoAlignment_Local then
      local q = quatFromDir(quatFromEuler(0, math.pi / 2, 0) * self.currentPlane.normal, vec3(0, 0, 1))
      rotation = QuatF(q.x, q.y, q.z, q.w)
  if self.currentPlane then
    self.beginDragRotation = deepcopy(quatFromDir(quatFromEuler(0, math.pi / 2, 0) * self.currentPlane.normal, vec3(0, 0, 1)))
  end
@/gameplay/missionTypes/collection/customNodes/collectionMarkersNode.lua

      local rot = quatFromEuler(0,0,(os.clockhp()*1.34567 + (1-(1-m.collectedTimer)*(1-m.collectedTimer))*math.pi*3)):toTorqueQuat()
      markerObj:setField('rotation', 0, rot.x .. ' ' .. rot.y .. ' ' .. rot.z .. ' ' .. rot.w)
@/lua/ge/extensions/util/procTrack.lua
      checkPoint.scale = vec3(scenario.nodes['gym_'..i].radius,scenario.nodes['gym_'..i].radius,scenario.nodes['gym_'..i].radius)
      local quat = quatFromEuler(0,0,-math.atan2(nvRot.y, nvRot.x)):toTorqueQuat()
      checkPoint:setField('rotation', 0, quat.x .. ' ' ..quat.y..' '..quat.z..' '..quat.w)
@/lua/ge/extensions/editor/meshEditor.lua
local function rotateAround(mesh, nodeID, euler, rotationPoint)
  local rot = quatFromEuler(euler.x, euler.y, euler.z)
@/lua/ge/extensions/scenario/busdriver.lua
      pos = (tpos-xVec*d+yVec*w)
      r = tr * quatFromEuler(0, 0, rad(90))
    elseif k == 2 then --Top Right
      pos = (tpos+xVec*d+yVec*w)
      r = tr * quatFromEuler(0, 0, rad(180))
    elseif k == 3 then --Bottom Right
      pos = (tpos+xVec*d-yVec*w)
      r = tr * quatFromEuler(0, 0, rad(270))
    elseif k == 4 then --Botton Left
@/lua/ge/extensions/core/cameraModes/shake.lua
  )
  local q = quatFromEuler(rotEuler.x, rotEuler.y, rotEuler.z)
@/lua/ge/main.lua
    local scale = vec3(1.5, 1.5, 1.5)
    local r = quatFromEuler(0, 0, math.rad(45))
    local instance = prefab:spawn("", pos, QuatF(r.x, r.y, r.z, r.w), scale)
    local scale = vec3(s, s, s)
    local r = quatFromEuler(0, 0, math.rad(math.random(0, 360)))
    local name = "test_v2_"..tostring(i)
@/lua/ge/extensions/util/trackBuilder/cameraTransition.lua
local oldPosition = vec3(0,0,0)
local oldQuat = quatFromEuler(0,0,0)
local targetPosition = vec3(0,0,0)
local targetQuat = quatFromEuler(0,0,0)
@/lua/ge/extensions/flowgraph/nodes/scene/collectionMarker.lua
      self.marker:setPosition(pos)
      local rot = quatFromEuler(0,0,(self.mgr.modules.timer.globalTime.real*1.75)):toTorqueQuat()
      self.marker:setField('rotation', 0, rot.x .. ' ' .. rot.y .. ' ' .. rot.z .. ' ' .. rot.w)
@/lua/ge/extensions/editor/driftDataEditor.lua
  for lineName, lineData in pairs(currDriftSpots[selectedDriftSpotId].spatialInfo.lines) do
    transformsUtils[lineName.."driftBox"] = createNewTransform("Sign pos", true, true, true, lineData.pos, quatFromEuler(lineData.rot.x, lineData.rot.y, lineData.rot.z), lineData.scl)
    transformsUtils[lineName.."startDir"] = createNewTransform("Entry dir", true, false, false, lineData.pos + lineData.startDir, nil, nil)