ConstantBackgroundEmitter(Stream *stream, InstanceManager *manager) : Emitter(stream, manager) { m_radiance = Spectrum(stream); m_sceneBSphere = BSphere(stream); m_geoBSphere = BSphere(stream); configure(); }
void CameraNode::renderHelper(AbstractRender *render, bool selected) const { mat4 m = camera.getFrustum().getModelview(); m.inverse(); render->setMatrix(m); render->drawFrustum(camera.getFrustum()); render->setMatrix(mat4()); render->drawSphere(BSphere(camera.pos, 0.1f)); vec3 p0 = camera.pos + camera.getDirection() * camera.getMinDistance(); vec3 p1 = camera.pos + camera.getDirection() * camera.getMaxDistance(); render->drawSphere(BSphere(p0, 0.1f)); render->drawSphere(BSphere(p1, 0.1f)); render->drawLine(Line(p0, p1)); }
ConstantLuminaire(Stream *stream, InstanceManager *manager) : Luminaire(stream, manager) { m_intensity = Spectrum(stream); m_bsphere = BSphere(stream); m_surfaceArea = 4 * m_bsphere.radius * m_bsphere.radius * M_PI; m_invSurfaceArea = 1/m_surfaceArea; }
void EntityNode::renderHelper(AbstractRender *render, bool selected) const { render->setMatrix(mat4()); vec3 p = getPos(true); render->drawSphere(BSphere(p, 0.1)); render->setMatrix(origin); render->drawLine(Line(vec3(), vec3(0.2, 0, 0))); render->drawLine(Line(vec3(), vec3(0, 0.2, 0))); render->drawLine(Line(vec3(), vec3(0, 0, 0.2))); }
bool EntityNode::trace(const Line &line, TracePoint &p, bool fs, bool fd) const { Line iLine = line; iLine.src = inverse * iLine.src; iLine.dst = inverse * iLine.dst; bool ret = BSphere(vec3(0, 0, 0), 0.1).trace(iLine, p, fs, fd); if (ret) { p.point = origin * p.point; p.normal = normalize(origin * p.normal - origin.getPos()); } return ret; }
ParticleSystemNode::ParticleSystemNode(Scene *scene_) : Node(scene_) { type = NODE_PARTICLESYSTEM; timeToSpawn = 0; box = BBox(vec3(-0.5, -0.5, -0.5), vec3(0.5, 0.5, 0.5)); particleBox = box; sphere = BSphere(vec3(), 0.5); first_update = true; setSpawnRate(5.0f); setLife(5.0f, 0.0f); setSize(0.1f, 0.0f); setGrowth(1.0f, 0.0f); setEmitter(EMITTER_BOX); setColor(vec3(0.5f, 0.5f, 0.0f), vec3(1.0f, 0.0f, 0.0f)); setSpeed(0.1f, 0.0f, 0.0f); setGravity(0.0f); setName(getTypeName()); }
BSphere BBox::BoundingSphere() const { const Point c = .5f * (pMin + pMax); const float rad = Inside(c) ? Distance(c, pMax) : 0.f; return BSphere(c, rad); }
BSphere AABB::getBSphere() const { Point3 center = getCenter(); return BSphere(center, (center - max).length()); }
void PhysicsNode::invalidate() { box = BBox(vec3(-0.5f, -0.5f, -0.5f), vec3(0.5f, 0.5f, 0.5f)); sphere = BSphere(vec3(0.0f, 0.0f, 0.0f), vec3(0.5f, 0.5f, 0.5f).length()); }
DirectionalEmitter(Stream *stream, InstanceManager *manager) : Emitter(stream, manager) { m_normalIrradiance = Spectrum(stream); m_bsphere = BSphere(stream); configure(); }