Exemple #1
0
void Physx1::MakeBlocks()
{
	PxTransform m_transform(PxVec3(0, 20, 0));
	PxBoxGeometry box(2, 2, 2);
	float density = 50;
	

	m_dynamicActor = PxCreateDynamic(*m_Physics, m_transform, box, *m_PhysicsMaterial, density);
	m_boxActors.push_back(m_dynamicActor);

	int size = m_boxActors.size();

	m_PhysicsScene->addActor(*m_boxActors[size - 1]);

	m_boxCount++;

	std::cout << "Boxes in Scene: " << m_boxCount << "\n";
	
}
Exemple #2
0
    reference dereference() const
    {
        const context &context = super_type::base().get_buffer().get_context();
        command_queue queue(context, context.get_device());

        detail::meta_kernel k("read");
        size_t output_arg = k.add_arg<value_type *>(memory_object::global_memory, "output");
        k << "*output = " << m_transform(super_type::base()[k.lit(0)]) << ";";

        kernel kernel = k.compile(context);

        buffer output_buffer(context, sizeof(value_type));

        kernel.set_arg(output_arg, output_buffer);

        queue.enqueue_task(kernel);

        return detail::read_single_value<value_type>(output_buffer, queue);
    }
Exemple #3
0
AABB AnimatedTransform::getTranslationBounds() const {
	if (m_tracks.size() == 0) {
		Point p = m_transform(Point(0.0f));
		return AABB(p, p);
	}

	AABB aabb;

	for (size_t i=0; i<m_tracks.size(); ++i) {
		const AbstractAnimationTrack *absTrack = m_tracks[i];
		switch (absTrack->getType()) {
			case AbstractAnimationTrack::ETranslationX:
			case AbstractAnimationTrack::ETranslationY:
			case AbstractAnimationTrack::ETranslationZ: {
					int idx  = absTrack->getType() - AbstractAnimationTrack::ETranslationX;
					const FloatTrack *track =
						static_cast<const FloatTrack *>(absTrack);
					for (size_t j=0; j<track->getSize(); ++j) {
						Float value = track->getValue(j);
						aabb.max[idx] = std::max(aabb.max[idx], value);
						aabb.min[idx] = std::min(aabb.min[idx], value);
					}
				}
				break;

			case AbstractAnimationTrack::ETranslationXYZ: {
					const VectorTrack *track =
						static_cast<const VectorTrack *>(absTrack);
					for (size_t j=0; j<track->getSize(); ++j)
						aabb.expandBy(Point(track->getValue(j)));
				}
				break;
			default:
				break;
		}
	}
	for (int i=0; i<3; ++i) {
		if (aabb.min[i] > aabb.max[i])
			aabb.min[i] = aabb.max[i] = 0.0f;
	}

	return aabb;
}
        void on_change(const vrpn_TRACKERCB t)
        {
            tf::Vector3 pos(t.pos[0], t.pos[1], t.pos[2]);
            pos = m_transform(pos);
            m_target.transform.translation.x = pos.x() * m_scaling.x();
            m_target.transform.translation.y = pos.y() * m_scaling.y();
            m_target.transform.translation.z = pos.z() * m_scaling.z();

            tf::Quaternion quat(t.quat[0], t.quat[1], t.quat[2], t.quat[3]);
            quat = m_transform * quat;
            m_target.transform.rotation.x = quat.x() * sign(m_scaling.x());
            m_target.transform.rotation.y = quat.y() * sign(m_scaling.y());
            m_target.transform.rotation.z = quat.z() * sign(m_scaling.z());
            m_target.transform.rotation.w = quat.w();

            m_target.header.stamp = ros::Time::now();

            m_br.sendTransform(m_target);
        }
Exemple #5
0
AABB AnimatedTransform::getSpatialBounds(const AABB &aabb) const {
	AABB result;

	if (m_tracks.size() == 0) {
		for (int j=0; j<8; ++j)
			result.expandBy(m_transform(aabb.getCorner(j)));
	} else {
		/* Compute approximate bounds */
		int nSteps = 100;
		AABB1 timeBounds = getTimeBounds();
		Float step = timeBounds.getExtents().x / (nSteps-1);

		for (int i=0; i<nSteps; ++i) {
			const Transform &trafo = eval(timeBounds.min.x + step * i);
			for (int j=0; j<8; ++j)
				result.expandBy(trafo(aabb.getCorner(j)));
		}
	}

	return result;
}
nv_math::vec4f VkeCamera::worldPosition(nv_math::vec4f &inPosition){
	return m_transform(inPosition);
}
Exemple #7
0
nv_math::vec4f Node::worldPosition(nv_math::vec4f &inPosition){
	return m_transform(inPosition);
}
Exemple #8
0
nv_math::vec4f Node::worldPosition(){
	nv_math::vec4f outPosition(0.0, 0.0, 0.0, 1.0);

	return m_transform(outPosition);
}